欢迎访问==> 【考研OR保研】机试题
题目描述
输入两个整数 n n n 和 m m m,输出一个 n n n 行 m m m 列的矩阵,将数字 1 1 1 到 n × m n \times m n×m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数 n n n 和 m m m。
输出格式
输出满足要求的矩阵。
矩阵占 n n n 行,每行包含 m m m 个空格隔开的整数。
数据范围
1 ≤ n , m ≤ 100 1 \le n,m \le 100 1≤n,m≤100
输入样例:
3 3
输出样例:
1 2 3
8 9 4
7 6 5
C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const int dx[] = {0, 1 ,0, -1}, dy[] = {1, 0, -1, 0};
int n, m, res[N][N];
int main()
{
cin >> n >> m;
for(int x = 0, y = 0, num = 1, k = 0; num <= n * m; num ++)
{
res[x][y] = num;
int nx = x + dx[k], ny = y + dy[k];
if(nx < 0 || nx >= n || ny < 0 || ny >= m || res[nx][ny])
{
k = (k + 1) % 4;
nx = x + dx[k], ny = y + dy[k];
}
x = nx, y = ny;
}
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < m; j ++) cout << res[i][j] << ' ';
cout << endl;
}
return 0;
}