首页 > 其他 > 详细

C和指针 学习(三) 第八章习题 八皇后问题

时间:2021-05-21 12:13:47      阅读:12      评论:0      收藏:0      [点我收藏+]

采用回溯法求解,第一确定解空间的判断,第二建立迭代

 

#include <stdio.h>
int Queen[8] = {0};
int count = 0;

void print(int queen[]){
    for (int i = 0i < 8i++){
        for(int j = 0j < 8j++){
            if (j == queen[i]){
            printf("Q");
            }
            else{
            printf("#");
            }
        } 
        printf("\n");
    }
    printf("========\n");
}

int check(int lineint list){
    for(int tempLine = 0tempLine < linetempLine++){
        int tempRow = Queen[tempLine];
        if (tempRow == list){
            return 0;
        }
        if((tempRow + tempLine) == (line + list)){
            return 0;
        }
        if((tempRow - tempLine) == (list - line)){
            return 0;
        } 
    }
    return 1;
}

void eightQueen(int line){
    for (int list = 0list < 8list++){
        if (check(linelist)){
            Queen[line] = list;
            if (line == 7){
                count++;
                print(Queen);
                Queen[line] = 0;
                return;
            }
            eightQueen(line + 1);
            Queen[line] = 0;
        }
    }
}

int main(){
    eightQueen(0);
    printf("一共%d种方法"count);
    return 0;
}

C和指针 学习(三) 第八章习题 八皇后问题

原文:https://www.cnblogs.com/ELFTE/p/14792510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!