八皇后问题(递归)
来源:互联网 发布:xp怎么打开445端口 编辑:程序博客网 时间:2024/06/04 23:36
在n*n的方格棋盘上,放置n个皇后,要求每个皇后不同行,不同列,不同对角线。此题可用递归算法。
#include<stdio.h>#define N 20//最多的皇后个数int q[N];//存放各皇后所在的列号 int cont=0;// 存放解个数int abs(int i)//求绝对值{ if(i<0) return -i;}void print(int n){//输出一个解 int i; cont++; printf("第%d个解:",cont); for(i=1;i<=n;i++){ printf("(%d,%d) ",i,q[i]);//(i,q[i])位置有一个皇后 } printf("\n");} int judge(int j,int k){//判断k,j能否放皇后 int i; for(i=1;i<k;i++){//i=1~k-1各行已放置了皇后 if((q[i]==j) //判断是否同列 ||(abs(q[i]-j)==abs(i-k))){ //(i,q[i])与(k,j)是否同对角线 return 0;//返回0,表示(k,j)不能放皇后 } } return 1;} void place(int k,int n){//从放第k个皇后开始求解 if(k>n){//所有皇后放置结束 print(n);//输出一个解 } else{ int j; for(j=1;j<=n;j++){//在第k行上穷举每个列号j if(judge(j,k)){ q[k]=j;//在(k,q[k]处放一个皇后 place(k+1,n);//递归调用放余下的皇后 } } }} int main(){ place(1,8);//这里为八皇后问题 return 0;}
0 0
- 八皇后问题(递归)
- 八皇后问题(递归)
- 八皇后问题(递归)
- 八皇后问题(递归)
- 八皇后问题(递归+非递归)
- 递归:: 八皇后问题
- 八皇后问题--递归
- 【递归】八皇后问题
- 八皇后问题(牛人非递归版)
- 八皇后问题(非递归版)
- 八皇后问题(递归版)
- 八皇后问题递归实现(C++)
- 八皇后问题(递归+回溯)
- 八皇后问题(递归+回溯)
- 八皇后问题(回溯 递归)
- 八皇后问题(递归实现)
- 八皇后问题(递归实现)
- 八皇后问题(递归,回溯)
- Win8下用DOSBox编写汇编语言
- 通过registerContentObserver(注册监听者)配合URI来实现恶意敏感信息窃取相关
- Android 事件分配机制
- Java的锁机制解析
- App 性能测试工具
- 八皇后问题(递归)
- Javascript闭包
- 导入maven项目报错处理
- 动态规划--最长公共子序列(LCS).九度1042
- 时间记录—暂行番茄
- 编译spidev_test程序
- ios 从URL中截取所包含的参数,并且以字典的形式返回和参数字典转URL
- ArcGIS Pro系列教程之登陆及离线授权
- unity3D初学者学习笔记之Transrom.Lookat