2016 UESTC Training for Search Algorithm & String A - Xiper的奇妙历险(1) 八皇后问题、dfs
来源:互联网 发布:三种网络分层结构 编辑:程序博客网 时间:2024/05/21 11:29
A - Xiper的奇妙历险(1)
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
西历772002年。
在喵哈哈村,有一个无忧无虑的少年
然而一天,一辆马车到达了xiper的家里。从马车上,走下一个优雅的年轻人。
“在下周日天,有何贵干!?”
原来在十年前,
日天不仅挠头比
俗话说得好,上帝给你关上了一扇门,同时也会给你打开一扇窗户。在机缘巧合之下,郁闷的
然而,这一切都被狡诈的日天看在眼里。一日,日天趁着卿学姐独自一人,强吻了卿学姐。
“你的初吻不是
夺妻之仇,不过如此!忍无可忍的
所有方案!
日天万万没想到,
从此,日天不敢轻视
那么问题来了,所有的方案到底是什么呢?
Input
一个数
Output
第一行输出一个数
接下来
因为出题人懒得写spj,所以请按字典序输出每个方案。
Sample input and output
8///仅作为例子参考
921 5 8 6 3 7 2 4 1 6 8 3 7 4 2 5 1 7 4 6 8 2 5 3 1 7 5 8 2 4 6 3 (剩下88种请自行脑补)
Hint
如果任意两个皇后都不在同一行、同一列、同一斜线上,则是满足条件的方案。
只有一组测试数据。
由于出题人是个智障,输出答案时,每个方案最后一个数字后面要多输出一个空格再换行,不然似乎会PE...
Source
2016 UESTC Training for Search Algorithm & StringMy Solution
八皇后问题这里是九个皇后
逐行放置,则皇后肯定不会横向攻击,只需要检查纵向和两个斜向攻击即可
其中用 cur - C[cur] == j - C[j] || cur + C[cur] == j + C[j] 来判断是否有斜向攻击
用 C[cur] == C[j] 检查纵向攻击
然后每次 cur == n 的时候这一钟情况就完成了, 把这个C[0~n-1] 存储到ans[tot][i]里
最后全部返回了 就得到了所有答案
然后for for 打印即可
#include <iostream>#include <cstdio>using namespace std;int n, tot, C[16];// n == 9, tot == 352int ans[352+8][9];void _search(int cur){ if(cur == n){ tot++; for(int i = 0; i < n; i++){ ans[tot][i] = C[i]; } } else{ for(int i = 1; i <= n; i++){ //!行数的表示用 1 ~ n, 下标还是 0 ~ n-1 int ok = 1; C[cur] = i; //把第cur行的皇后放在第C[cur] = i列 for(int j = 0; j < cur; j++){ //检查是否冲突 if(C[cur] == C[j] || cur - C[cur] == j - C[j] || cur + C[cur] == j + C[j]){ ok = 0; break; } } if(ok) _search(cur+1); } }}//!HInt 每个方案最后一个数字后面要多输出一个空格再换行int main(){ #ifdef LOCAL freopen("a.txt", "w", stdout); #endif // LOCAL tot = 0; scanf("%d", &n); _search(0); printf("%d\n", tot); for(int i = 1; i <= tot; i++){ for(int j = 0; j < n; j++){ printf("%d ", ans[i][j]); } printf("\n"); } return 0;}
Thank you!
------from ProLights
- 2016 UESTC Training for Search Algorithm & String A - Xiper的奇妙历险(1) 八皇后问题、dfs
- 【Search&String Algorithm Training】Xiper的奇妙历险(1)
- 【Search&String Algorithm Training】Xiper的奇妙历险(2)
- 2016 UESTC Training Search Algorithm and StringB - Xiper的奇妙历险(2)(三维迷宫)
- 2016 UESTC Training for Search Algorithm & String E - 吴队长征婚 dfs剪枝、好题
- CDOJ (UESTC OJ) 1380 Xiper的奇妙历险(3)
- 2016 UESTC Training for Search Algorithm & String(A B C E I K)
- 2016 UESTC Training for Search Algorithm & String K - 卿大爷的三个女友 KMP、跳转数组
- UESTC Training for Search Algorithm——A
- B - Xiper的奇妙历险(2)
- 2016 UESTC Training for Search Algorithm & String H - 中二少女与字符串 Trie 字典树
- 2016 UESTC Training for Search Algorithm & String I - 谭爷剪花布条 KMP
- UESTC Training for Search Algorithm(总结)
- 2014 UESTC Training for Search Algorithm B
- 2014 UESTC Training for Search Algorithm C
- 2014 UESTC Training for Search Algorithm
- 2014 UESTC Training for Search Algorithm E
- 2014 UESTC Training for Search Algorithm F
- 利用python进行数据分析-pandas入门3
- μCOS-II系统之时间管理函数OSTimeDlyHMSM()
- T--Linux SSH免密码登录
- 设置或获取元素的内容
- 【Android基础】动画
- 2016 UESTC Training for Search Algorithm & String A - Xiper的奇妙历险(1) 八皇后问题、dfs
- TextView的跑马灯效果
- char 与 unsigned char
- 游戏服务端架构发展史(中)
- hdu 5444 Elven Postman(模拟建树)
- Spring2.5中使用注解装配属性
- 解密:Gradle 如何使用Maven本地缓存库(Local Maven repository)
- android之JNI参数传递
- 在WIN32 DLL中使用MFC