回溯法——八皇后问题
来源:互联网 发布:网络流行词语有哪些 编辑:程序博客网 时间:2024/04/28 23:54
问题:
在8*8的国际象棋上,摆放8个,皇后,使其不能互相攻击,即:不能是同一行、同一列、同一斜线上,问有多少种摆法?
#include <stdio.h>#define N 8int chess[N]; // 记录可行解,每记录一个,就打印出来。下表为行0~7,值为列0~7int count; // 记录可行解的个数bool safeJudge( int row, int col ) { // 判断(row, col)位置能不能放for( int i = 0; i < row; i ++ ) {if( chess[i] == col // 列 || row - i == col - chess[i] // 主对角线 || row - i == chess[i] - col // 次对角线)return false;}return true;}void print() {printf("第%2d个:", ++ count );for( int i = 0; i < N; i ++ )printf("<%d, %d>%c", i + 1, chess[i], i == N -1 ? '\n' : ',' );}void back_trace( int row = 0 ) { // 以深度优先搜索方式进行搜索for( int col = 0; col < N; col ++ ) {if( safeJudge( row, col ) ) { // 如果可以放置一个皇后chess[ row ] = col; // 放下皇后,记录该皇后的位置if( row < N - 1 ) // 如果没到最后一行,递归,下一行back_trace ( row + 1 );else // 如果摆放了8个,则直接打印出来print();}}}int main() {count = 0;for( int i = 0; i < N; i ++ )chess[i] = 0;back_trace( );return 0;}
0 0
- 回溯法——八皇后问题
- 回溯法——八皇后问题
- 回溯法——八皇后问题
- 回溯法—八皇后问题
- 回溯法—八皇后问题(N皇后)
- 回溯算法——八皇后问题
- 回溯——八皇后问题
- 八皇后问题 —— 回溯
- 八皇后问题—回溯算法
- 八皇后问题——枚举法,回溯法
- 经典 八皇后问题——回溯法
- 八皇后问题——回溯法解决
- 回溯法1——八皇后问题
- 八皇后问题——递归+回溯法
- 回溯法——八皇后问题 n-queens
- 回溯法——八皇后问题【通俗易懂】
- 暴力搜索 回溯法 —— 八皇后问题
- 八皇后问题 回溯法
- Sql 字符串 比较大小
- CF Permutations【排列组合+求和】
- 指针初始化为NULL的作用
- 同步与互斥
- Window.location.href 执行问题
- 回溯法——八皇后问题
- QT(MinGW)静态库+Opencv静态编译
- 使用PHP下载CSS文件中的图片的代码
- 小鸡哔哔。。最有逻辑的歌词,听过脑洞大开
- Android Studio(02)——常用快捷键收集总结
- Java动态代理
- Linux连接文件——ln命令
- OWM JAPIs
- CF Game