dev上输出正确,测评错误

P1219 [USACO1.5] 八皇后 Checker Challenge

a1765786112 @ 2024-11-21 20:07:41

#include<stdio.h>
#include<math.h>
int flag[100]={0};
int arr[100];
int n;
int time=0;
int judge(int x1,int y1,int x2,int y2)
{
    float k=(float)(y1-y2)/(float)(x1-x2);
    if(abs(k)==1)
    {
        return 1;
    }
    return 0;
}
void dfs(int i,int n)
{
    if(i==n&&time<3)
    {
        for(int a=0;a<n;a++)
        {
            printf("%d ",arr[a]+1);
        }
        printf("\n");
    }
    if(i==n)
    {
        time+=1;
    }
    for(int a=0;a<n;a++)
    {
        int flag1=1;
        for(int j=0;j<i;j++)
        {
            if(judge(j,arr[j],i,a)==1)
            {
                flag1=0;
                break;
            }
        }
        if(flag[a]==0&&flag1==1)
        {
            flag[a]=1;
            arr[i]=a;
            dfs(i+1,n);
            flag[a]=0;
        }
    }
}
int main()
{
    scanf("%d",&n);
    dfs(0,n);
    printf("%d\n",time);
}

|