天天看點

XDOJ 螺旋矩陣

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;
}

           

繼續閱讀