矩陣螺旋輸出:
阿新 • • 發佈:2017-05-16
程序 ges des padding using 思路 tps lightbox 依次
給定一個 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 }
矩陣螺旋輸出: