CCF認證 2014-12 Z字形掃描
阿新 • • 發佈:2019-01-09
找到座標變換的規律,分成上三角和下三角兩個部分輸出
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int N = 500+10; int a[N][N]; int main() { int n, x, y; cin >> n;// 輸入資料 for(int i=0; i<n; i++) for(int j=0; j<n; j++) cin >> a[i][j]; x = 0; y = 0; for(int i=0; i<n; i++) // 輸出左上三角 if(i & 1) { for(int j=0; j<i; j++) cout << a[x++][y--] << " "; cout << a[x++][y] << " "; } else { for(int j=0; j<i; j++) cout << a[x--][y++] << " "; cout<< a[x][y++] << " "; } if(n & 1) // 輸出右下三角 y--, x++; else y++, x--; for(int i=n-2; i>0; i--) if(i & 1) { for(int j=0; j<i; j++) cout << a[x++][y--] << " "; cout << a[x][y++] << " "; } else { for(int j=0; j<i; j++) cout << a[x--][y++] << " "; cout << a[x++][y] << " "; } if(n!=1) cout << a[n-1][n-1] << endl; return 0; }