xdoj,XDOJ 螺旋矩陣
簡單的循環思路
loop loop 我愛loop
#include<stdio.h>
int main()
{
int j[101][101],p,o,m,u,r,t,y;
int n;
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;
}