AcWing 756. 蛇形矩阵(二维数组)
原题链接
简单
作者:
orange0912
,
2020-05-27 11:34:40
,
所有人可见
,
阅读 499
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
const int S =110;
int d[S][S];
int main()
{
int i,j,n,m,k;
int t=0;//代表方向改变的值 改变顺序为0 1 2 3
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
cin>>n>>m;
for(i=0,j=0,k=1,t=0; k<=n*m; k++)
{
d[i][j]=k;
int a=i+dx[t];
int b=j+dy[t];
if(a<0||b<0||a>=n||b>=m||d[a][b]>0) //某方向走到尽头,需要改变方向和下一步的位置了
{
t=(t+1)%4;
a=i+dx[t];
b=j+dy[t];
}
i=a;
j=b;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cout<<d[i][j]<<" ";
cout<<endl;
}
return 0;
}