1 #include <iostream> 2 using namespace std; 3 int arr[505][505]; 4 bool flag; 5 int n; 6 void printComp(int x1, int y1, int x2, int y2) 7 { 8 int i = x1, j = y1; 9 if (x1 == n && x2 == n) { 10 cout << arr[n][n] << endl; 11 return; 12 } 13 if (!flag) { 14 // 斜向上 15 while (i >= 1 && j <= y2) { 16 cout << arr[i][j] << ' '; 17 i--; 18 j++; 19 } 20 } 21 else { 22 // 斜向下 23 while (i <= x2 && j >= 1) { 24 cout << arr[i][j] << ' '; 25 i++; 26 j--; 27 } 28 } 29 } 30 31 int main() 32 { 33 ios::sync_with_stdio(false); 34 cin.tie(0); 35 cin >> n; 36 for (int i = 1; i <= n; i++) 37 for (int j = 1; j <= n; j++) 38 cin >> arr[i][j]; 39 flag = false; 40 for (int i = 1; i <= n; i++) { 41 if (!flag) printComp(i, 1, 1, i); 42 else printComp(1, i, i, 1); 43 flag = !flag; 44 } 45 for (int i = 2; i <= n; i++) { 46 if (!flag) printComp(n, i, i, n); 47 else printComp(i, n, n, i); 48 flag = !flag; 49 } 50 return 0; 51 }