八皇后问题--递归调用
来源:互联网 发布:软件设计师怎么挂靠 编辑:程序博客网 时间:2024/06/08 05:55
参考了算法竞赛入门经典那本书p125:
#include <stdio.h>const int n=4;int tol=0;int arr[n];//输出某个解void print_res(int arr[],int n){for(int i=0; i<n; i++){for(int j=0; j<n; j++){if(arr[i]==j)printf("Q ");elseprintf("O ");}printf("\n");}}//递归求解所有解//输入:cur-----代表当前处理的行号(从0开始计数,所以判断位置的时候已经保证了肯定不在同一行上)void search_queen(int cur){if(cur==n){tol++;//打印结果--必须在每次得到解后打印出来,否则后面的时候arr[]数组里边的内容就被覆盖了/*for (int t=0; t<n; t++){printf("%d ",arr[t]);}printf("\n");*/printf("tol: %d\n",tol);print_res(arr,n);printf("\n");return ;}else{for(int j=0; j<n; j++)//遍历每一列的位置,选择合适的位置{int ok=1;arr[cur]=j;//试探第cur行的第j列的位置for (int m=0; m<cur; m++)//判断是否符合位置条件{if(arr[m]==j || m-cur==arr[m]-j || m-cur==j-arr[m])//是否同一列、是否同一个对角线、是否同一个副对角线{ok=0;break;//发现不符合条件,直接回溯,到cur行的下一个列的位置进行试探}}if(ok==1)search_queen(cur+1);//对下一行进行递归调用}}}int main(){search_queen(0);return 0;}
0 0
- 八皇后问题--递归调用
- 递归:: 八皇后问题
- 八皇后问题--递归
- 【递归】八皇后问题
- 八皇后问题.递归算法.
- 递归回溯--八皇后问题
- 八皇后递归求解问题
- 递归求解八皇后问题
- 八皇后问题 非递归
- 递归解决八皇后问题
- 八皇后问题(递归回溯)
- 八皇后问题(递归)
- 八皇后问题|递归|回溯
- 八皇后问题 递归求解
- 递归求解八皇后问题
- 经典递归问题--八皇后
- 八皇后问题--递归算法
- 八皇后问题递归代码
- 怎样解决PHP中文乱码问题
- 四 s5p4418 Android 对can总线的支持 支持波特率修改
- momocms代码审计
- 三天打渔两天晒网
- 口碑营销 转载
- 八皇后问题--递归调用
- 我的学习之旅(45)pcnet32.c
- Android开发之资源文件存储
- 1063. Set Similarity (25)
- wifi连接的诡异
- 学习笔记4-项目的目录结构与安装及启动过程分析
- Matlab归一化方法
- Android开发——android调试工具集【转】
- i++