博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回溯法求解八皇后问题
阅读量:7222 次
发布时间:2019-06-29

本文共 1203 字,大约阅读时间需要 4 分钟。

hot3.png

#include 
#include 
#define N 8int column[N+1]; // 同栏是否有皇后,1表示有int rup[2*N+1]; // 右上至左下是否有皇后int lup[2*N+1]; // 左上至右下是否有皇后int queen[N+1] = {0};int num; // 解答编号void backtrack(int); // 递回求解int main(void) {    int i;    num = 0;    for(i = 1; i <= N; i++)        column[i] = 1;    for(i = 1; i <= 2*N; i++)        rup[i] = lup[i] = 1;    backtrack(1);    return 0;}void showAnswer() {    int x, y;    printf("\n解答 %d\n", ++num);    for(y = 1; y <= N; y++) {        for(x = 1; x <= N; x++) {            if(queen[y] == x) {                printf(" Q");            }            else {                printf(" .");            }        }        printf("\n");    }}void backtrack(int i) {    int j;    if(i > N) {        showAnswer();    }    else {        for(j = 1; j <= N; j++) {            if(column[j] == 1 &&                 rup[i+j] == 1 && lup[i-j+N] == 1) {                queen[i] = j;                // 设定为占用                column[j] = rup[i+j] = lup[i-j+N] = 0;                backtrack(i+1);                column[j] = rup[i+j] = lup[i-j+N] = 1;            }        }    }}

http://www.oschina.net/code/snippet_234517_12132

转载于:https://my.oschina.net/u/1423127/blog/277306

你可能感兴趣的文章
转:Java NIO系列教程(二) Channel
查看>>
线程相关参数
查看>>
Android提升篇系列:Android项目代码优化实践
查看>>
改造 Android 官方架构组件 ViewModel
查看>>
2400万AI自拍再进阶,荣耀10青春版发布开启新自拍时代
查看>>
贾跃亭被指拿恒大的投资款告投资人 总费用超2000万
查看>>
春运守护者 大陆首批台湾籍乘务长黄佳莹
查看>>
潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
查看>>
“老票证”述时代变迁:从凭“票”买到“任意”购
查看>>
做java该要了解的东西
查看>>
春节出行带个对讲机 旅行实测威诺VR-N65
查看>>
河北旅游发展蓝皮书:借力雄安打造京津冀世界旅游品牌
查看>>
江西一名男婴被弃医院9个月 其父自首其母接回孩子
查看>>
江西去年为企业、居民减税659亿元 发行1082亿元政府债券
查看>>
GitHub发布Python安全警告 识别依赖包的安全漏洞
查看>>
讲好文创的时代故事
查看>>
支持53种语言预训练模型,斯坦福发布全新NLP工具包StanfordNLP
查看>>
翟欣欣微博发声解释“真相”
查看>>
Mac 常用必备软件(GitHub)
查看>>
快速排序就这么简单
查看>>