首页 新闻 会员 周边

在做递归,关于n皇后的问题,我用count计数结果数,为什么得到的却是枚举次数呢?

0
[待解决问题]
#include <stdio.h>
#include <math.h>
const int maxn=11;
int p[maxn],hashtable[maxn]={false};
int n=8;
static int count=0;

void generate(int index){    
    if(index==n+1){
        bool flag = true;
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                if(abs(i-j)==abs(p[i]-p[j]))
                   flag = false;
            }
        }
    if(flag) {
        count++;
    }
    return;
}
    for(int i=1;i<=n;i++){
        if(hashtable[i]==false){
            p[index]=i;
            hashtable[i]==true;
            generate(index+1);
            hashtable[i]==false;
    }
}
}

int main(){
    //scanf("%d",&n);
    generate(1);
    printf("%d",count);
    return 0;
}
翻白眼嗯嗯嗯的主页 翻白眼嗯嗯嗯 | 菜鸟二级 | 园豆:204
提问于:2021-12-07 21:43
< >
分享
所有回答(1)
0

没有对细看您里面的八皇后问题,但是您这个count++就是 一次generate 可能出现一次 +,所以次数一定是小于等于 generate 次数,您这里没有递归,就是你小于等于您的循环次数。

gw2010 | 园豆:1487 (小虾三级) | 2021-12-09 17:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册