#include <iostream>
#include <cstdio>
using namespace std;
int res[100][100]; //不能定义在主函数里,数据过大时会报错
//思路可以类比贪吃蛇,撞墙就改变方向
int main()
{
int m,n;
cin>>m>>n;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0}; //创建存储偏移量的数组
int x=0,y=0,d=0; //定义起始位置和起始偏移量(向右偏移)
for(int k=1;k<=n*m;k++) //定义填入数组的变量
{
res[x][y]=k; //给数组各位置赋值
int a=x+dx[d],b=y+dy[d]; //定义偏移位置
if(a<0||a>=m||b<0||b>=n||res[a][b]) //判断是否需要改变方向
{
d=(d+1)%4; //条件成立,偏移量改变,方向改变(向下/左/上/右偏移)
a=x+dx[d],b=y+dy[d]; //重新给偏移位置赋值
}
x=a,y=b; //更改位置
}
for(int i=0;i<m;i++) //输出数组
{
for(int j=0;j<n;j++) cout<<res[i][j]<<' ';
cout<<endl;
}
return 0;
}
11-20
1400
12-07
1267