求助!为什么输入5以后打印出来的幻方里面会出现0?谢谢大佬!
查看原帖
求助!为什么输入5以后打印出来的幻方里面会出现0?谢谢大佬!
801021
HITvici楼主2023/7/16 22:04
#include <stdlib.h>
#include <string.h>
int  searchRow(int n,int arr[n][n],int K)
{
    for(int i=0;i<n;i++)
    {
        if(arr[0][i]==K)
        {
            return 1;
        }
    }
    return 0;
}
int searchCol(int n,int arr[n][n],int K)
{
    for(int i=0;i<n;i++)
    {
        if(arr[i][n-1]==K)
        {
            return 1;
        }
    }
    return 0;

}

int main()
{
    int n;
    scanf("%d",&n);
    int arr[n][n];
    memset(arr,0,sizeof(arr));
    int K;
    int col=(n-1)/2;
    int row=0;
    arr[row][col]=1;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    for(K=2;K<=n*n;K++)
    {
        if(searchRow(n,arr,K-1)==1&&searchCol(n,arr,K-1)==0)
        {
            col++;
            row=n-1;
            arr[row][col]=K;
        }
        if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==1)
        {
            row--;
            col=0;
            arr[row][col]=K;
        }
        if(searchRow(n,arr,K-1)==1&&searchCol(n,arr,K-1)==1)
        {
            row++;
            arr[row][col]=K;
        }
        if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==0&&arr[row-1][col+1]==0)
        {
            row--;
            col++;
            arr[row][col]=K;
        }
        if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==0&&arr[row-1][col+1]!=0)
        {
            row++;
            arr[row][col]=K;
        }

    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

2023/7/16 22:04
加载中...