xdoj,XDOJ 螺旋矩阵
简单的循环思路
int main()
{
int j[101][101],p,o,m,u,r,t,y;
scanf("%d",&n);
p=1;//行数初值1
o=1;//循环数字的值
t=0;//行数初值0
u=0;//列数初值
y=n;
loop:
for(int i=t;i<p;i++)//从左到右
{
for(int k=u;k<n;k++)
{
j[i][k]=o;
o++;
}
}
for(int i=p;i<n;i++)//从上到下
{
for(int k=n-1;;)
{
j[i][k]=o;
o++;
break;
}
}
for(int i=n-1;i<n;i++)//从右到左
{
for(int k=n-2;k>=u;k--)
{
j[i][k]=o;
o++;
}
}
for(int i=n-2;i>t;i--)//从下到上
{
for(int k=u;;)
{
j[i][k]=o;
o++;
while(i==t+1)
{
u++;
t++;
n--;
p++;
if(n<y/2)
{
break;
}
goto loop;
}
break;
}
}
for(int i=0;i<y;i++)
{
for(int k=0;k<y;k++)
{
printf("%3d",j[i][k]);
}
printf("\n");
}
return 0;
}