给定一个 m行、n列的矩阵,请按照顺时针螺旋的顺序输出矩阵中所有的元素(从[0][0]
位置开始,具体请参见下图)。
输入格式
测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的 m 和 n,之间用一个空格分隔。接下来输入 m行,每行包含 n 个整数,每两个整数之间用一个空格分隔。
输出格式
输出为一行,包括 m×n 个整数,按照题目要求的顺序依次输出所有矩阵元素,任意两个整数之间用一个空格分隔,最后一个整数后面没有空格。
样例输入1
2 3 1 2 3 3 4 6
样例输出1
1 2 3 6 4 3
样例输入2
3 2 1 2 3 4 5 6
样例输出2
1 2 4 6 5 3
1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int matrix[100][100]; 6 int m; 7 int n; 8 int l = 1, i, j, k; 9 cin >> m >> n; 10 for (i = 0; i<m; i++) { 11 for (j = 0; j<n; j++) { 12 cin >> matrix[i][j]; 13 } 14 } 15 k = 0; 16 i = 0; 17 j = 0; 18 for (;;) { 19 20 for (; j<n - i; j++) { 21 cout << matrix[i][j]; 22 k++; 23 if (k == m*n) 24 break; 25 else 26 cout<<" "; 27 if (j == n - i - 1) { 28 i++; 29 l = 2; 30 break; 31 } 32 } 33 if (k == m*n) 34 break; 35 36 for (; i<m - n + 1 + j; i++) { 37 cout << matrix[i][j] ; 38 k++; 39 if (k == m*n) 40 break; 41 else 42 cout<<" "; 43 if (i == m - n + j) { 44 j--; 45 l = 3; 46 break; 47 } 48 } 49 if (k == m*n) 50 break; 51 for (; j >= m - 1 - i; j--) { 52 cout << matrix[i][j] ; 53 k++; 54 if (k == m*n) 55 break; 56 else 57 cout<<" "; 58 if (j == m - i-1) { 59 i--; 60 l = 4; 61 break; 62 } 63 } 64 if (k == m*n) 65 break; 66 for (; i>j; i--) { 67 cout << matrix[i][j]; 68 k++; 69 if (k == m*n) 70 break; 71 else 72 cout<<" "; 73 if (i == j + 1) { 74 j++; 75 l = 1; 76 break; 77 } 78 } 79 80 if (k == m*n) 81 break; 82 } 83 return 0; 84 }
时间: 2024-10-05 04:19:46