756蛇形矩阵
作者:
什么意思O_o
,
2024-10-23 19:46:49
,
所有人可见
,
阅读 1
#include<iostream>
using namespace std;
int res[100][100];
int main()
{
int n,m;
cin>>n>>m;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0}; //先定义四个方向
for(int x=0,y=0,d=0,k=1;k<=n*m;k++) //从左上角00开始走,方向d从0开始
{
res[x][y]=k; //先输入一个xy的值
int a=x+dx[d],b=y+dy[d]; //沿着现在的方向,求下一个坐标
if(a<0||a>=n||b<0||b>=m||res[a][b]) //判断是否出界或前面已经出现过了
{
d=(d+1)%4; //如果是的d就要变化d=0时dx=0,dy=1;d=1时dx=1,dy=0意味着向下走d(1,0)。前面已经定义过了0123四个方向了
a=x+dx[d],b=y+dy[d]; //算一下新的方向
}
x=a,y=b; //第一次:x=0,y=1
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<res[i][j]<<' ';
cout<<endl;
}
return 0;
}