这道题其实很弱,数据小的话打表,数据大的话就数组复制
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
ll a[110][110],x=1,y=0,k=0,n,m;
int main()
{
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n*m;i++)
{
bool f=0;
if(k==0)
{
a[x][++y]=i;
if(y+1>m||a[x][y+1])f=1;
}
else if(k==1)
{
a[++x][y]=i;
if(x+1>n||a[x+1][y])f=1;
}
else if(k==2)
{
a[x][--y]=i;
if(!(y-1)||a[x][y-1])f=1;
}
else
{
a[--x][y]=i;
if(!(x-1)||a[x-1][y])f=1;
}
if(f)k=(k+1)%4;
}
for(ll i=1;i<=n;i++)
{
for(ll j=1;j<=m;j++)printf("%lld ",a[i][j]);
printf("\n");
}
return 0;
}
1
1