开发者社区 问答 正文

n皇后问题,递归算法。

n皇后问题,递归算法。

展开
收起
知与谁同 2018-07-17 15:33:40 2848 分享 版权
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
    赞同 展开评论
问答分类:
问答地址: