1. 程式人生 > >21:二維陣列右上左下遍歷

21:二維陣列右上左下遍歷

原題連結

總時間限制: 
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 <iostream>
#include <cstring>
using namespace std;
int main()
{
    int A[100][100];
    int row, col, i, j, r=0, c=0;
    cin >> row >> col;
    for (i=0; i<row; i++)
        for (j=0; j<col; j++)
            cin >> A[i][j];
    // 首先以第0行,列遞增為起點遍歷col次
    for (j=0; j<col; j++){
        r = 0;
        c = j;
        while (r<row && c>=0)
            cout << A[r++][c--] << endl;
    }
    // 然後以第col-1列,行遞增為起點遍歷row-1次
    for (i=1; i<row; i++){
        r = i;
        c = col-1;
        while (r<row && c>=0)
            cout << A[r++][c--] << endl;
    }
    return 0;
}