AcWing 756. 蛇形矩阵
原题链接
简单
作者:
殇ベ_11
,
2021-02-19 16:04:13
,
所有人可见
,
阅读 317
题目描述
输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数n和m。
输出格式
输出满足要求的矩阵。
矩阵占n行,每行包含m个空格隔开的整数。
数据范围
1≤n,m≤100
样例
输入样例:
3 3
输出样例:
1 2 3
8 9 4
7 6 5
算法1
(暴力枚举)
C++ 代码
#include<bits/stdc++.h>
#define N 20
using namespace std;
int a[105][105];
int n ,m, k = 1, x = 1, y = 0;
int main()
{
scanf("%d%d",&n,&m);
while (k<=n*m)
{
while(y < m && !a[x][y+1])
a[x][++y] = k++;
while(x < n && !a[x+1][y])
a[++x][y] = k++;
while(y > 1 && !a[x][y-1])
a[x][--y] = k++;
while(x > 1 && !a[x-1][y])
a[--x][y] = k++;
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= m;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}