AcWing 756. 蛇形矩阵
原题链接
简单
作者:
jaemin
,
2025-01-18 21:35:28
,
所有人可见
,
阅读 1
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
//int t[100][100];
int main()
{
int n,m;
int t[100][100]={0};//第一个元素为0,其余为0
cin>>n>>m;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
//向下为x轴,向右为y;向右动为(0,1)
//向下为(1,0),向左为(0,-1),向上为(-1,0)
for(int i=0,j=0,d=0,k=1;k<=n*m;k++)//d为方向下标
{
t[i][j]=k;
int a=i+dx[d];
int b=j+dy[d];
if(a>=n||a<0||b>=m||b<0||t[a][b]!=0)//碰到边界就顺时针旋转。即d+1
{
d=(d+1)%4;//4个方向
a=i+dx[d];
b=j+dy[d];
}
i=a;
j=b;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<t[i][j]<<' ';
cout<<endl;
}
}