21:二维数组右上左下遍历
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。
- 输入
- 输入的第一行上有两个整数,依次为row和col。
余下有row行,每行包含col个整数,构成一个二维整数数组。
(注:输入的row和col保证0 < row < 100, 0 < col < 100) - 输出
- 按遍历顺序输出每个整数。每个整数占一行。
- 样例输入
-
3 4 1 2 4 7 3 5 8 10 6 9 11 12
- 样例输出
-
1 2 3 4 5 6 7 8 9 10 11 12
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 int tot=1; 7 int ans=2; 8 int now=1;// 1向下 2向上 9 int a[101][101]; 10 int hang=3,lie=2; 11 int main() 12 { 13 int n,m; 14 int i=1,j=1;//坐标 15 cin>>n>>m; 16 for(int i=1;i<=n;i++) 17 { 18 for(int j=1;j<=m;j++) 19 cin>>a[i][j]; 20 } 21 while(i*j!=n*m) 22 { 23 if(lie==m+2) 24 break; 25 cout<<a[i][j]<<endl; 26 i++; 27 j--; 28 if(j==0||i==n+1) 29 { 30 i=1; 31 j=lie; 32 lie++; 33 } 34 35 } 36 i=2; 37 j=m; 38 while(i*j!=n*m) 39 { 40 if(hang==n+2) 41 break; 42 cout<<a[i][j]<<endl; 43 i++; 44 j--; 45 if(j==0||i==n+1) 46 { 47 j=m; 48 i=hang; 49 hang++; 50 } 51 } 52 cout<<a[n][m]; 53 return 0; 54 }