开发者社区> 问答> 正文

n皇后问题,递归算法。

n皇后问题,递归算法。

展开
收起
知与谁同 2018-07-17 15:33:40 2754 0
1 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...

    c: #include <stdio.h>
    #include <stdlib.h>
    int result=0;
    void queen(int *chess,int len,int n){
        if(n==len){
            result++;
        }else{
            int flag=0;
            for(int i=0;i<len;i++){
                flag=1;
                for(int j=0;j<n;j++){
                    if(abs(n-j)==abs(i-chess[j]) || chess[j]==i){
                        flag=0;
                        break;
                    }
                }
                if(!flag)
                    continue;
                chess[n]=i;
                queen(chess,len,n+1);
                chess[n]=0;
            }
        }
    }

    int main(void){
        int n;
        int *chess;
        scanf("%d",&n);
        chess=(int*)malloc(sizeof(int)*n);
        queen(chess,n,0);
        printf("result = %d \n",result);
        return 0;
    }

    2019-07-17 22:54:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载