八皇后问题
来源:互联网 发布:淘宝卖家账号注册 编辑:程序博客网 时间:2024/06/10 15:11
问题描述:
八皇后问题最早是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出。在8×8格的国
际象棋棋盘上放置八个皇后,使得任意两个皇后不能互相攻击,即任何行、列或对角
线(与水平轴夹角为45°或135°的斜线)上不得有两个或两个以上的皇后。这样的
一个格局称为问题的一个解。
问题分析:
一个正确的解应当是每一列,每一行,每一条斜线上均只有一个皇后。
借用的图示:
#include<stdio.h>#include<string.h>#define N 8int p[N+1];int num;void show(){printf("\t%d\n",++num);for(int i=1;i<=N;i++){for(int j=1;j<=N;j++){if(p[i]==j){printf(" *");}else{printf(" .");}}printf("\n");}}int check(int n,int k){for(int i=1;i<n;i++){//判断前 n 行上是否有要填的位置有歧义的 ,不包括该行if(p[i]==k)return 0;if(p[i]-i==k-n)return 0;if(p[i]+i==k+n)return 0;}return 1;}void find(int n){if(n>N){show();return ;}else{for(int i=1;i<=N;i++){if(check(n,i)){p[n]=i; // n 为数组 p 的下标,记下列 find(n+1);}}}} int main(){memset(p,0,sizeof(p));num=0;find(1);return 0;}
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 2015.11XML
- linux的用户层GPIO接口管理
- 第8周项目5-计数的模式匹配
- SEO代码优化
- 二叉树基本操作及层次遍历
- 八皇后问题
- Javac编译找不到符号(解决方法)
- Linux(Centos)支持rz、sz命令
- 在eclipse中安装node.js环境
- 第九周 项目3-稀疏矩阵的三元组表示的实现及应用
- C#解析eml文件
- MySQL字符串函数substring:字符串截取
- 用wireshark抓包IOS优酷app
- atomic_read原子操作