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)不要弄混行和列

 
posted @   邓乔泽  阅读(163)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示