题目描述
小五同学最近在仓库工作,他在仓库里发现了一种斜条纹的木箱(请自行脑补),于是想用二位数组来模拟木箱的一面,然后把条纹填满数,再读出来。如下所示:
1 2 4
3 5 7
6 8 9
这一面读出来就是$1 2 3 4 5 6 7 8 9$,空格分开(最后一个数后面也有空格)
那他现在随手填了几个数字,让你帮忙按照上面的顺序读取一下。
输入
多组输入
第一行输入3<=n<=20,代表一个n x n的矩阵。
然后下面n行就是每行的数字。
输出
请你输出按照上面的顺序读取出来的数列。
样例输入
1 2 3 4 5 6 7 8 9
| 3 1 2 3 4 5 6 7 8 9 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
样例输出
1 2
| 1 2 4 3 5 7 6 8 9 1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16
|
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream> #include <cstring> using namespace std; int main(){ int n; while(cin>>n){ int a[n+5][n+5]; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } cout<<a[1][1]<<" "; int k=2; int x,y; while(k<=n){ x=1,y=k; while(x<=k&&y>=1){ cout<<a[x][y]<<" "; x++;y--; } k++; } int l=2; while(l<=n){ x=l,y=n; while(x<=n&&y>=l){ cout<<a[x][y]<<" "; x++;y--; } l++; } cout<<endl; } return 0; }
|