抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

总时间限制: 1000ms 内存限制: 65536kB

描述

给定一个 row 行 col 列的整数数组 array,要求从 array [0][0] 元素开始,按从左上到右下的对角线顺序遍历整个数组。在这里插入图片描述

在这里插入图片描述

输入

输入的第一行上有两个整数,依次为 row 和 col。
余下有 row 行,每行包含 col 个整数,构成一个二维整数数组。
(注:输入的 row 和 col 保证 0 < row < 100, 0 < col < 100)

输出

按遍历顺序输出每个整数。每个整数占一行。

样例输入

1
2
3
4
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
1
2
3
4
5
6
7
8
9
10
11
12

思路

以下图为例
pkOcpQJ.jpg]
无论在行还是列上开始,都是 a [i][j] 中的 i 增加,j 减少。
我们可以分为两部分,一部分是列上开始,一部分是行上开始,当到达边界的时候,我们就停止。

Code

C++ STL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;

int main() {
int row, col;
array<array<int, 100>, 100> a;
cin >> row >> col;
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
cin >> a[i][j];
}
}
for(int i = 0; i < col; i++) {
for(int j = 0, k = i; j < row && k < col && k >= 0 && j >= 0; j++, k--) {
cout << a[j][k] << endl;
}
}
for(int i = 1; i < row; i++) {
for(int j = i, k = col-1; j < row && k < col && k >= 0 && j >= 0; j++, k--) {
cout << a[j][k] << endl;
}
}
}

C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>

int main() {
int row, col;
int a[100][100];
scanf("%d %d", &row, &col);
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
scanf("%d", &a[i][j]);
}
}
for(int i = 0; i < col; i++) {
for(int j = 0, k = i; j < row && k < col && k >= 0 && j >= 0; j++, k--) {
printf("%d\n", a[j][k]);
}
}
for(int i = 1; i < row; i++) {
for(int j = i, k = col-1; j < row && k < col && k >= 0 && j >= 0; j++, k--) {
printf("%d\n", a[j][k]);
}
}
}

测试用例

测试用例 1

输入

1
2
3
4
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
1
2
3
4
5
6
7
8
9
10
11
12

测试用例 2

输入

1
2
3
4
3 3
1 2 3
4 5 6
7 8 9

输出

1
2
3
4
5
6
7
8
9
1
2
4
3
5
7
6
8
9

测试用例 3

输入

1
2
3
4
3 2
1 2
3 4
5 6

输出

1
2
3
4
5
6
1
2
3
4
5
6

测试用例 4

输入

1
2
1 10
1 2 3 4 5 6 7 8 9 10

输出

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

测试用例 5

输入

1
2
3
4
5
6
7
8
9
10
11
10 1
1
2
3
4
5
6
7
8
9
10

输出

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10