sdau-2 1019
2016-04-24 19:31
162 查看
描述:
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。<br>你的任务是,对于给定的N,求出有多少种合法的放置方法
输入
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
1850
输出
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
19210思路:
隐藏boss,一个细思极恐的深搜题,要是只是做,不难。难在如何优化目前已发现三种解法法1,普通深搜,不解释法2,将棋盘用位运算压缩。。。这个还没懂,后头再看看大牛的博客法3,这是最有效率也最无耻的方法。。。因为检验数据是1到10,所以把1到10的答案列出,存入数组............要再看看这题,很有门道。代码#include<string.h>
#include<stdio.h>
using namespace std;
int map[20];
int n,tmp;
void dfs(int k){
int i,j,flag;
if(k==n+1){
tmp++;
return;
}else{
for(i=1;i<=n;++i){
map[k]=i;
flag=1;
for(j=1;j<k;++j){
if(map[j]==i||i-k==map[j]-j||i+k==map[j]+j){
flag=0;
break;
}
}
if(flag)
dfs(k+1);
}
}
}
int main(){
int i,m;
int ans[11];
for(n=1;n<=10;++n){
tmp=0;
dfs(1);
ans
=tmp;
}
while(scanf("%d",&m),m){
printf("%d\n",ans[m]);
}
return 0;
}
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。<br>你的任务是,对于给定的N,求出有多少种合法的放置方法
输入
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
1850
输出
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
19210思路:
隐藏boss,一个细思极恐的深搜题,要是只是做,不难。难在如何优化目前已发现三种解法法1,普通深搜,不解释法2,将棋盘用位运算压缩。。。这个还没懂,后头再看看大牛的博客法3,这是最有效率也最无耻的方法。。。因为检验数据是1到10,所以把1到10的答案列出,存入数组............要再看看这题,很有门道。代码#include<string.h>
#include<stdio.h>
using namespace std;
int map[20];
int n,tmp;
void dfs(int k){
int i,j,flag;
if(k==n+1){
tmp++;
return;
}else{
for(i=1;i<=n;++i){
map[k]=i;
flag=1;
for(j=1;j<k;++j){
if(map[j]==i||i-k==map[j]-j||i+k==map[j]+j){
flag=0;
break;
}
}
if(flag)
dfs(k+1);
}
}
}
int main(){
int i,m;
int ans[11];
for(n=1;n<=10;++n){
tmp=0;
dfs(1);
ans
=tmp;
}
while(scanf("%d",&m),m){
printf("%d\n",ans[m]);
}
return 0;
}
相关文章推荐
- Ubuntu14.04+Cuda7.5驱动BUG的解决方案
- 第三篇 Entity Framework Plus 之 Query Cache
- java---多线程调度与控制常见方法一览
- java实现快速排序
- 对微软自带输入法的一些评价
- 字符串匹配算法
- 现代软件工程第八次作业
- linux安全登录,ssh
- 匿名对象用法
- 动态规划-数组中求最长等差数列的长度
- HDU 1248 寒冰王座(完全背包)(dp 或 暴力)
- ida借助windbg 双机调试内核
- ACM学习历程—HDU5667 Sequence(数论 && 矩阵乘法 && 快速幂)
- acm 2 1026 Sudoku Killer
- android 分辨率自适应
- 继承
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 G. 易彰彪的一张表
- Leetcode no. 312
- 20145107 《Java程序设计》第三次实验报告
- request请求中有点号