哪位大佬能帮帮忙,万分感谢

P1219 [USACO1.5] 八皇后 Checker Challenge

hanzuorui @ 2023-07-29 10:29:12

八皇后结果出错,调试了半天了,(C语言<stdio.h>,用的是最简单的dfs

#include <stdio.h>
int ans,a[9];
bool check(int n)
{
    for(int i=1;i<n;i++)
    {
        if(a[n]==a[i]||a[n]+n==a[i]+i||a[n]-n==a[i]-i)
        {
            return 0;
        }
        return 1;     
    }
}
void dfs(int n)
{
    if(n==9)
    {
        ans++;
    }
    else
    {
        for(int i=1;i<=8;i++)
        {
            a[n]=i;
            if(check(n)==1)
            {
                dfs(n+1);
            }
        }
    }
}
int main()
{
    dfs(1);
    printf("%d",ans);
    return 0;
}

万分感谢


by MTF_Lambda_04 @ 2023-07-29 10:42:29

@hanzuorui <<前三行为前三个解,每个解的两个数字之间用一个空格隔开。第四行只有一个数字,表示解的总数。>>


by HRcohc @ 2023-07-30 16:43:38

这题皇后数量没定,不一定是8


|