八皇后问题
来源:互联网 发布:cpi数据 编辑:程序博客网 时间:2024/06/06 07:25
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
#include "stdio.h" #include <stdlib.h> static char Queen[8][8]; static int a[8]; static int b[15]; static int c[15]; static int iQueenNum=0; void qu(int i); int main() { int iLine,iColumn; for(iLine=0;iLine<8;iLine++) { a[iLine]=0; for(iColumn=0;iColumn<8;iColumn++) Queen[iLine][iColumn]='*'; } for(iLine=0;iLine<15;iLine++) b[iLine]=c[iLine]=0; qu(0); return 0; } void qu(int i) { int iColumn; for(iColumn=0;iColumn<8;iColumn++) { if(a[iColumn]==0&&b[i-iColumn+7]==0&&c[i+iColumn]==0) { Queen[i][iColumn]='Q'; a[iColumn]=1; b[i-iColumn+7]=1; c[i+iColumn]=1; if(i<7) qu(i+1); else { int iLine,iColumn; printf("No.%d\n",++iQueenNum); for(iLine=0;iLine<8;iLine++) { for(iColumn=0;iColumn<8;iColumn++) printf("%c ",Queen[iLine][iColumn]); printf("\n"); } system("pause"); printf("\n\n"); } Queen[i][iColumn]='*'; a[iColumn]=0; b[i-iColumn+7]=0; c[i+iColumn]=0; } } }
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- python中and和or的用法
- SDUT2889_爱上CF(模拟)
- 第七次练习赛解题报告及标程
- jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
- 定时器去抖动
- 八皇后问题
- NDK undefined reference to 错误
- 初级概念
- 【Ubuntu】升到14,解决了进入用户后没有菜单栏导航栏的问题
- [解决]Eclipse不能开发Web项目
- C++ 播放音频流(PCM裸流)
- [LeetCode20]Valid Parentheses
- 集合差集算法
- 只能努力,才有方向