1 //ccf-Z字形扫描 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 #define N 500 6 int main() 7 { 8 unsigned n, i, j;cin >> n; 9 //n = 4; 10 //unsigned a[N][N] = { { 1, 5, 3, 9 },{ 3, 7 ,5, 6 },{ 9, 4, 6, 4 },{ 7 ,3, 1, 3 } }; 11 unsigned a[N][N]; 12 for (i = 0; i < n; i++) 13 for (j = 0; j < n; j++) 14 cin >> a[i][j]; 15 16 i = 0; j = 0; 17 int k = 0, m; 18 cout << a[0][0] << ' '; 19 while (k <= 2 * n - 2) 20 { 21 ++k; 22 if (k < n) 23 { 24 if (k % 2) 25 { 26 j++; 27 i = 0; 28 while (i < k) 29 { 30 cout << a[i][j] << ' '; 31 j--; 32 i++; 33 } 34 } 35 else 36 { 37 i++; 38 //j = 0; 39 while (j < k) 40 { 41 cout << a[i][j] << ' '; 42 i--; 43 j++; 44 } 45 } 46 cout << a[i][j] << ' '; 47 } 48 else 49 { 50 if (k % 2) 51 { 52 m = 2 * n - k; 53 //j = n - 1; 54 //i++; 55 j = n; 56 while (--m) 57 { 58 59 i++; 60 j--; 61 cout << a[i][j] << ' '; 62 } 63 } 64 else 65 { 66 m = 2 * n - k; 67 i = n; 68 while (--m) 69 { 70 j++; 71 i--; 72 cout << a[i][j] << ' '; 73 } 74 } 75 } 76 } 77 return 0; 78 }
注意i,j输出后的值即可~