HDU2553 N皇后问题
来源:互联网 发布:淘宝价格怎么设置打折 编辑:程序博客网 时间:2024/05/22 15:47
N皇后问题
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1850
Sample Output
19210
————————————————————————————————————————————————————
求N皇后有多少种方法,只能试探性的在每个位置暴力搜,用一个一维数组map[i],表示i行皇后位置可减少判断。会超时,所以先打表
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>using namespace std;int map[12];int cnt;bool cheak(int x,int y){ for(int i=1;i<x;i++) { if(map[i]==y||abs(x-i)==abs(map[i]-y)) return 0; } return 1;}void dfs(int x,int m){ if(x>m) { cnt++; return; } for(int i=1;i<=m;i++) { if(cheak(x,i)) { map[x]=i; dfs(x+1,m); } }}int main(){ int a[11],m; a[0]=0; for(int i=1;i<=10;i++) { cnt=0; dfs(1,i); a[i]=cnt; } while(~scanf("%d",&m)&&m) { printf("%d\n",a[m]); } return 0;}
0 0
- hdu2553 N皇后问题
- HDU2553 N皇后问题
- HDU2553:N皇后问题
- hdu2553 n皇后问题
- hdu2553 N皇后问题
- hdu2553 n皇后问题
- HDU2553 N皇后问题
- N皇后问题 hdu2553
- HDU2553 N皇后问题
- HDU2553 N皇后问题
- HDU2553 N皇后问题
- HDU2553-N皇后问题
- HDU2553 N皇后问题
- hdu2553 n皇后问题
- hdu2553-N皇后问题.回溯
- HDU2553:N皇后问题(DFS)
- dfs HDU2553 N皇后问题
- N皇后问题(hdu2553)
- 链表分析笔记
- RecyclerView实现不同布局,Model实体类写法
- 结合开发文档分析volley(三)
- 第8章 Linux磁盘与文件系统管理
- 开发日记——手机安全卫士 Day01 2016-7-20 完成主界面和设置密码功能
- HDU2553 N皇后问题
- Android之多线程下载及断点续传
- mysql之explain
- cublas中执行矩阵乘法运算的函数 首先要注意的是cublas使用的是以列为主的存储方式,和c/c++中的以行为主的方式是不一样的。处理方法可参考下面的注释代码
- uva 10943 How do you add?
- Android HTML 中添加空格
- JavaSE基础(六)
- caffe与Python接口的配置(VC2013 Windows CUDA7.5 Python2.7.12)
- 2016 Multi-University Training Contest 1 1001 Abandoned country