蛇形矩阵
题目描述
输入两个整数
n 和 m,输出一个 n 行 m 列的矩阵,将数字 1 到 n×m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数n和m。
输出格式
输出满足要求的矩阵。 矩阵占 n 行,每行包含m个空格隔开的整数。
样例
输入数据
3 3
输出数据
1 2 3
8 9 4
7 6 5
数据范围
1≤n,m≤100.
#include <iostream>
using namespace std;
int main() {
int a[110][110], n, m;
int cnt = 1;
int left, top, right, bottom;
cin >> n >> m;
left = 1;
top = 1;
bottom = n;
right = m;
a[1][1] = 1;
while (cnt <= n * m) {
for (int i = left; i <= right; i++) {
a[top][i] = cnt;
cnt++;
}
if (cnt > n * m)
break;
top++;
for (int i = top; i <= bottom; i++) {
a[i][right] = cnt;
cnt++;
}
if (cnt > n * m)
break;
right--;
for (int i = right; i >= left; i--) {
a[bottom][i] = cnt;
cnt++;
}
if (cnt > n * m)
break;
bottom--;
for (int i = bottom; i >= top; i--) {
a[i][left] = cnt;
cnt++;
}
if (cnt > n * m)
break;
left++;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}