1.8.21二维数组右上左下遍历
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)不要弄混行和列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现