为什么我的输出和答案完全一样但是还是0分啊,
查看原帖
为什么我的输出和答案完全一样但是还是0分啊,
362578
lcvweixiao楼主2020/11/7 12:36
#include<stdio.h>
#include<stdlib.h>
int data[1600]={0};
int main()
{
    int N,i=0,count=0,n;
    scanf("%d",&N);
    data[i*N+(N-1)/2]=1;
    n=(N-1)/2;
    count++;
    while(count<N*N)
    {
        //若 (K-1) 在第一行但不在最后一列,则将 K 填在最后一行, (K-1) 所在列的右一列
        if(i==0&&n!=N-1)
        {
            count++;
            data[(N-1)*N+n+1]=count;
            i=N-1;
            n=n+1;
            continue;
        }
        //若 (K-1)在最后一列但不在第一行,则将K填在第一列, (K-1)所在行的上一行
        if(i!=0&&n==N-1)
        {
            count++;
            data[(i-1)*N+0]=count;
            i=i-1;
            n=0;
            continue;
        }
        //若 (K-1) 在第一行最后一列,则将 K 填在 (K-1) 的正下方
        if(i==0&&(n==N-1))
        {
            count++;
            data[(i+1)*N+n]=count;
            i=i+1;
            continue;
        }
        //若(K-1)既不在第一行,也不在最后一列,如果(K-1)的右上方还未填数,则将 K 填在(K−1) 的右上方,否则将K填在 (K-1)的正下方.
        if(i!=0&&(n!=N-1))
        {
            count++;
            if(data[(i-1)*N+n+1]==0)
            {
                data[(i-1)*N+n+1]=count;
                i=i-1;
                n=n+1;
                continue;
            }
            else
            {
                data[(i+1)*N+n]=count;
                i=i+1;
                continue;
            }
        }
    }
    for(int j=0;j<N*N;j++)
    {
        printf("%d ",data[j]);
        if((j+1)%N==0)
            printf("\n");
    }
    return 1;
}

2020/11/7 12:36
加载中...