1.题目
描述
给定一个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
2.题目意思总结
从题目可知,已知一个二维数组,要求按从左上到右下的对角线顺序遍历整个数组,我们需要找到遍历过程中隐藏的规律,
就能编写出通向的代码,从而解决问题。
3.解题思路
1)输入
2)根据“前半段每条线的起始点行数为1,列数为g(其中g指正在遍历的第g条线)。后半段每条线的起始点行数为(g+1-数组的列数),列数为数组的列数”的规律,依次遍历(输出)。
4.代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,a[101][101],i,k;
cin>> n>> m;
for(int n1=1;n1<=n;n1++){
for(int m1=1;m1<=m;m1++){//输入。
cin>> a[n1][m1];
}
}
for(int g=1;g<=n+m-1;g++){
if(g<=m){//判断在前半段还是后半段,并做出相应的操作。
i=1;
k=g;
}
else{
i=g+1-m;
k=m;
}
while(i<=n and k>=1){//遍历整条线。
cout<< a[i][k]<< endl;
i++;
k--;
}
}
return 0;
}
5.重难点总结
1)通过题目描述,找到一般规律。
2)不要弄混行和列
标签:遍历,21,int,右上,数组,列数,左下,col,row From: https://www.cnblogs.com/365760dqz/p/17644091.html