九度oj 题目1140:八皇后
- 题目描述:
-
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。
对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。
给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。
- 输入:
-
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1 <= b <= 92)
- 输出:
-
输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。
- 样例输入:
-
2
1
92
- 样例输出:
-
15863724
84136275#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define MAX 10
#define inf 1000000009
int mat[MAX][MAX];
int temp[MAX];
int ans[][MAX];
int cnt = ; bool isOk(int x, int y) {
int a = , b = ;
for(int i = ; i < ; i++) {
a = a + mat[x][i];
b = b + mat[i][y];
if(a >= || b >= ) {
return false;
}
}
for(int i = x - , j = y-; i >= && j >= ; i--, j--) {
if(mat[i][j] == ) {
return false;
}
}
for(int i = x - , j = y+; i >= && j < ; i--, j++) {
if(mat[i][j] == ) {
return false;
}
}
return true;
} void dfs(int n) {
if(n == ) {
cnt++;
for(int i = ; i < ; i++) {
ans[cnt][i] = temp[i];
}
return;
}
for(int i = ; i < ; i++) {
if(isOk(n,i)) {
mat[n][i] = ;
temp[n] = i+;
dfs(n+);
mat[n][i] = ;
}
}
} int main(int argc, char const *argv[])
{
int n;
//freopen("input.txt","r",stdin);
memset(mat, , sizeof(mat));
dfs();
while(scanf("%d",&n) != EOF) {
while(n--) {
int m;
scanf("%d",&m);
for(int i = ; i < ; i++) {
printf("%d",ans[m][i]);
}
puts("");
} }
return ;
}其实,判断是否可以放置的代码还可以利用temp,使其更简洁
#include <cstdio>
#include <string>
#include <cstring>
#define MAX 10
int mat[MAX][MAX];
int temp[MAX];
int ans[][MAX];
int cnt = ; bool isOk(int x, int y) {
for(int i = ; i < x; i++) {
if(temp[i]- == y) {
return false;
}
if(temp[i]-+ i == (x+y) || temp[i] - - i == (y-x)) {
return false;
}
}
return true;
} void dfs(int n) {
if(n == ) {
cnt++;
for(int i = ; i < ; i++) {
ans[cnt][i] = temp[i];
}
return;
}
for(int i = ; i < ; i++) {
if(isOk(n,i)) {
mat[n][i] = ;
temp[n] = i+;
dfs(n+);
mat[n][i] = ;
}
}
} int main(int argc, char const *argv[])
{
int n,m;
memset(mat, , sizeof(mat));
dfs();
while(scanf("%d",&n) != EOF) {
while(n--) {
scanf("%d",&m);
for(int i = ; i < ; i++) {
printf("%d",ans[m][i]);
}
puts("");
}
}
return ;
}
九度oj 题目1140:八皇后的更多相关文章
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
- 九度OJ题目1003:A+B
while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...
随机推荐
- git命令收集
$ git clone ... $ git status 查看状态 $ git commit -am "XXX" 提交信息 $ git commit -am "XXXX& ...
- Webservice相关的知识
一.利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务 1.首先建立一个Web services EndPoint: package Hello; import ...
- Drools应用实例
Drools 实例介绍 Drools编译与运行: 在Drools当中,规则的编译与运行要通过Drools提供的各种API来实现,这些API总体来讲可以分为三类:规则编译.规则收集和规则的执行. Kmo ...
- mybatis insert、update 、delete默认返回值解释与如何设置返回表主键
在使用mybatis做持久层时,insert.update.delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数: 那么如果想要得到被操作记录的主键,可以通过下面的配置方式获取 ...
- Linux中yum、rpm、configure使用介绍
安装程序命令介绍 安装包选择策略:能上外网:yum方式.绿色方式->不能上外网:rpm方式.configure方式 1.yum命令yum安装包时,会包所依赖的包也会安装到系统,将源换成163的源 ...
- codevs 2277 爱吃皮蛋的小明(水题日常)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 小明特别爱吃蛋,特别是皮蛋.他一次可以吃一个蛋或者两个蛋(整个吞下去),而且他 ...
- windows中安装模拟器后修改模拟器中的hosts方法
1.背景 有的时候我们测试安卓的app需要绑定hosts,这个时候我们如果只是修改PC机器上的hosts,然而在模拟器中并不生效.这个时候我们就需要修改模拟器中的hosts. 模拟器中的hosts为只 ...
- 实 Jordan 标准型和实 Weyr 标准型
将学习到什么 本节讨论关于实矩阵的实形式的 Jordan 标准型,也讨论关于复矩阵的另外一种形式的 Jordan 标准型,因为它在与交换性有关的问题中很有用. 实 Jordan 标准型 假设 \( ...
- nyoj-586-疯牛|poj-2456-Aggressive cows
http://acm.nyist.net/JudgeOnline/problem.php?pid=586 http://poj.org/problem?id=2456 解题思路:最大化最小值二分答案即 ...
- helm istio k8s docker
helm https://hub.helm.sh/ k8s https://www.kubernetes.org.cn/k8s istio 微服务 https://istio.io/