1. 程式人生 > >矩陣螺旋輸出:

矩陣螺旋輸出:

程序 ges des padding using 思路 tps lightbox 依次

給定一個 m行、n列的矩陣,請按照順時針螺旋的順序輸出矩陣中所有的元素(從[0][0]位置開始,具體請參見下圖)。

技術分享

輸入格式

測評機會反復運行你寫的程序。每次程序運行時,首先在第一行輸入 2 個整數,分別對應題目描述中的 mn,之間用一個空格分隔。接下來輸入 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 }

矩陣螺旋輸出: