八皇后问题 的92种结果
来源:互联网 发布:守望先锋 网络同步 编辑:程序博客网 时间:2024/05/17 23:54
八皇后问题求解代码:
#include<stdio.h>#include<stdlib.h>#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); printf(" "); for(int i=1;i<=8;i++)printf("%d ",i); printf("\n"); for(y=1;y<=N;y++)//y是行号 { printf(" %d ",y); for(x=1;x<=N;x++)//x是列号 { if(queen[y]==x) { printf("Q "); } else { printf(". "); } } printf("\n"); }}void backtrack(int i)//i为行数{ int j; if(i>N) { showAnswer(); } else { for(j=1;j<=N;j++)//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; } } }}
0 0
- 八皇后问题 的92种结果
- SQL语言的魅力 36秒求解八皇后问题(92种结果)
- 八皇后的问题
- 八皇后的问题
- 八皇后的问题
- 八皇后问题的两种解法
- 八皇后问题的两种解法
- 八皇后问题的两种解决方法
- 八皇后问题的两种解法
- 八皇后、N皇后问题的求解。
- 八皇后打印结果
- 八皇后问题的实现
- 八皇后问题的解法
- 八皇后问题的并行
- 著名的八皇后问题
- 扩展的八皇后问题
- 谈谈八皇后的问题
- 八皇后问题的实现
- 单个进程最大线程数
- oracle学习笔记名词篇
- 行人检测资源
- UVa 12034 Race
- 啥?
- 八皇后问题 的92种结果
- RESTful API 设计最佳实践(6)
- 2016秋 学习笔记2
- 偏函数
- 【t044】弗洛伊德
- C语言实践--day1
- 主成分个数 - 快排中partition的深入理解
- 从零开始ASP.NET MVC(一)
- js判断对象是否相等