1. 程式人生 > >openjudge 二維陣列右上坐下遍歷(二維陣列)

openjudge 二維陣列右上坐下遍歷(二維陣列)

二維陣列右上左下遍歷

總時間限制: 
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
tips:關鍵是位置處理吧,我們按照列印的位置順序看的話:
(0,0)
(0,1)(1,0)
(0,2)(1,1)(2,0)
(0,3)(1,2)(3,0)
(1,3)(2,2)
(2,3)
和從【0,行數+列數-2】然後行序從0開始遍歷,只要行序和列序都能保證陣列不越界的話就列印輸出。
#include<iostream>
#include<cstring>

using namespace std;
const int maxn=111;

int a[maxn][maxn];
int n,m;
int main(){
	
	cin>>n>>m;
	for(int i=0;i<n;i++)
	for(int j=0;j<m;j++)cin>>a[i][j];
	
	for(int i=0;i<=n+m-2;i++)
	{
		for(int j=0;j<n&&j<=i;j++)
		{
			if(i-j<m&&i-j>=0)cout<<a[j][i-j]<<endl;
		}
	}
	return 0;
}