AcWing 756. 蛇形矩阵
原题链接
简单
作者:
繁花似锦
,
2020-04-23 12:20:41
,
所有人可见
,
阅读 584
saber
转载
#include <iostream>
using namespace std;
const int N = 110;
int n,m;
int g[N][N];
int dx[4]={0,1,0,-1},dy[]={1,0,-1,0};
void bfs()
{
int x=1,y=1;
g[1][1]=1;
int t=0;
for(int i=2;i<=n*m;i++)
{
int a=x+dx[t],b=y+dy[t];
if(a<1 || a>n || b<1 || b>m || g[a][b]) // 如果碰壁或者遍历过就转向
{
t=(t+1)%4;a=x+dx[t],b=y+dy[t];
}
g[a][b]=i;
x=a,y=b;
}
}
int main()
{
cin >> n >> m;
bfs();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) cout<<g[i][j]<<" ";
cout<<endl;
}
}