博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2553 N皇后问题(深度递归搜索)
阅读量:6939 次
发布时间:2019-06-27

本文共 1771 字,大约阅读时间需要 5 分钟。

N皇后问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 3730    Accepted Submission(s): 1737

Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
 

 

Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
 

 

Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
 

 

Sample Input
1 8 5 0
 

 

Sample Output
1 92 10
/**n皇后问题,由于N 是小于等于10的正整数,所以可以使用打表的方法把前十中情况全部找出来存起来然后每次输入时不用重新的计算了。*/#include 
#define NUMS 10/*输入的数字1---10*/int N;/*棋盘*/int chessboard[11][11];/* 用来记录拜访数目 */int cal;/*检查皇后放置此行此列是否可以,可以返回1,不可以返回0此递归是一行一行找的,K是棋盘的长度*/int dfs_check(int row,int column,int k){ /* 说明已经到了棋盘的界外,前边都符合了 */ if(row>k) { cal++; return 1; } /* 正上方是否有皇后*/ for(int i = 1; i < row; i++) /* 如果有皇后则返回不能放置这里返回0*/ if(chessboard[i][column] == 1) return 0; /* 左右上方45度角检查是否可以*/ /* 左上方*/ for(int i=row-1,j=column-1;i>0&&j>0;i--,j--) if(chessboard[i][j] == 1) return 0; /* 右上方*/ for(int i=row-1,j=column+1;i>0&&j<=k;i--,j++) if(chessboard[i][j] == 1) return 0; /*标记这个位置成功了*/ chessboard[row][column] = 1; /*进行下一行搜索*/ for(int i=1;i<=k;i++) if(dfs_check(row+1,i,k)==1) break; chessboard[row][column] = 0; return 0;}int main(){ int i,j,k; int count[11]; /*打表*/ for(k=1;k<=NUMS;k++) { count[k] = 0; cal = 0; /*首先将棋盘初始化全部置为0*/ for(i=0;i<=NUMS;i++) for(j=0;j<=NUMS;j++) chessboard[i][j]=0; for(i=1;i<=k;i++) dfs_check(1,i,k); count[k] = cal; } while(scanf("%d",&N)!=EOF&&N!=0) printf("%d\n",count[N]); return 0;}

 

本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/archive/2012/10/06/2713013.html ,如需转载请自行联系原作者

你可能感兴趣的文章
koa2实现拦截器进行登录前session校验
查看>>
[java]窗口中的菜单项
查看>>
[ACM] hdu 2191 珍惜现在,感恩生活 (多重背包)
查看>>
python-并发编程之多进程
查看>>
JavaScript严格模式详解
查看>>
小X的佛光 NOIP模拟赛 倍增LCA 树结构
查看>>
The Himalayas (zoj 3809)
查看>>
[模板] 网络流相关/最大流ISAP/费用流zkw
查看>>
SCAU 10692 XYM-入门之道
查看>>
使用Ajax内容签名,减少流量浪费
查看>>
mysql 架构 ~异地容灾
查看>>
mui 上拉刷新加载template数据
查看>>
JavaScript中==比较时的过程
查看>>
HIDKomponente使用读写Hid设备一瞥
查看>>
gruntjs本地安装的流程
查看>>
mysql_real_escape_string
查看>>
elasticsearch配合mysql实现全文搜索
查看>>
Code Signal_练习题_depositProfit
查看>>
Oracle数据库—— 存储过程与函数的创建
查看>>
由于行255而未能重新格式化文档。已还原为原始格式。
查看>>