1. 程式人生 > >POJ C程式設計進階 程式設計題#2:二維陣列從右上左下遍歷

POJ C程式設計進階 程式設計題#2:二維陣列從右上左下遍歷

程式設計題#2: 二維陣列右上左下遍歷

來源: POJ (Coursera宣告:在POJ上完成的習題將不會計入Coursera的最後成績。)

注意: 總時間限制: 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

 

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
int row = 0, col = 0;
int a[100][100] = { 0 };
cin >> row >> col;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> a[i][j];
}
}

int posi = 0;

for (int i = 0; i < col; i++) {
posi = 0;
while (posi < row && i - posi >= 0) {
cout << a[posi][i - posi] << ' ';
posi = posi + 1;
}
}

for (int i = 1; i < row; i++) {
posi = 0;
while (col - 1 - posi >= 0 &&i + posi < row) {
cout << a[i + posi][col - 1 - posi] << ' ';
posi = posi + 1;
}
}

cout << endl;
return 0;

}

來源: POJ (Coursera宣告:在POJ上完成的習題將不會計入Coursera的最後成績。)

注意: 總時間限制: 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

 

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
int row = 0, col = 0;
int a[100][100] = { 0 };
cin >> row >> col;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> a[i][j];
}
}

int posi = 0;

for (int i = 0; i < col; i++) {
posi = 0;
while (posi < row && i - posi >= 0) {
cout << a[posi][i - posi] << ' ';
posi = posi + 1;
}
}

for (int i = 1; i < row; i++) {
posi = 0;
while (col - 1 - posi >= 0 &&i + posi < row) {
cout << a[i + posi][col - 1 - posi] << ' ';
posi = posi + 1;
}
}

cout << endl;
return 0;

}