AcWing 756. 蛇形矩阵
原题链接
简单
作者:
Moccept
,
2024-04-08 23:36:37
,
所有人可见
,
阅读 1
#include <iostream>
using namespace std;
const int N=110;
int n,m;
int q[N][N];
int main()
{
cin>>n>>m;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int x=0,y=0,d=1; //修改起点坐标,x=0,y=m-1,d=1; 则从右上角开始,向南蛇形出发
for(int i=1;i<=n*m;i++)
{
q[x][y]=i;
int a=x+dx[d],b=y+dy[d];
if(a<0||a>=n||b<0||b>=m||q[a][b]!=0)
{
d=(d+1)%4; //顺时针旋转一圈
a=x+dx[d],b=y+dy[d];
}
x=a,y=b;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<q[i][j]<<' ';//printf("%5d",a[i][j]); (这里修改以满足题意,比如为 m∗n 的矩阵,每个数字占5个字符,且右对齐)
cout<<endl;
}
return 0;
}