蛇形矩阵
题目描述
输入两个整数
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>
#include <bits/stdc++.h>
using namespace std;
int arr[105][105];
int main() {
int n, m;
cin >> n >> m;
int left = 1;
int top = 1;
int bottom = n;
int right = m;
int ans = 1;
while (ans <= n * m) {
//上排
int l = left;
while (l <= right) {
arr[left][l] = ans;
ans++;
l++;
}
top++;
if(top>bottom)
break;
//右排
int t = top;
while (t <= bottom) {
arr[t][right] = ans;
ans++;
t++;
}
right--;
if(right<left)
break;
//下排
int r = right;
while (r >= left) {
arr[bottom][r] = ans;
ans++;
r--;
}
bottom--;
if(bottom<top)
break;
//左排
int b = bottom;
while (b >= top) {
arr[b][left] = ans;
ans++;
b--;
}
left++;
if(left>right)
break;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}