hdu-2553 N皇后问题
来源:互联网 发布:ios淘宝hd历史版本 编辑:程序博客网 时间:2024/06/06 00:00
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
1850
19210
这个题目就是简单的皇后问题,用dfs的方式解决,因为不能在同一行,所以就可以设置一个数组,将他们
的列坐标来储存,这样就可以很方便的表示移动,还有一个问题是,如果只是按照方法写出来的话,就会超
时,因为只有10个数,所以可以将他们的结果储存在一个数组里面,下次再遇上相同的数字,就可以不用再dfs
了,因为这个问题就一直都是runtime error,改了之后就可以ac了
#include<iostream>#include<cstdlib>#include<cstring>using namespace std;bool chess[15][15];int hang[15];int n;int state;int baocun[15];int ok(int k){ for(int i = 1;i<k;i++) { if(hang[k]==hang[i]||abs(hang[k]-hang[i])==abs(k-i)) return false; } return true;}int qun(int k){ if(k>n){state++;return state ;} else { for(int i = 1;i<=n;i++) { hang[k] = i; if(ok(k)) qun(k+1); } } return state ;}int main(){memset(baocun,-1,sizeof(baocun)); while(cin>>n&&n!=0) { state = 0; memset(hang,0,sizeof(hang)); memset(chess,true,sizeof(chess)); if(baocun[n]==-1) baocun[n] = qun(1); int t = baocun[n]; cout<<t<<endl; } return 0;}
0 0
- HDU 2553 N皇后问题
- HDU 2553 N皇后问题
- HDU 2553-N皇后问题
- hdu 2553 N皇后问题
- HDU-2553-N皇后问题
- Hdu 2553 N皇后问题
- hdu 2553 N皇后问题
- hdu 2553 N皇后问题
- HDU 2553 N皇后问题
- HDU--2553 -- N皇后问题
- hdu-2553--N皇后问题
- 2553--Hdu--N皇后问题
- N皇后问题 hdu 2553
- HDU 2553 N皇后问题
- hdu 2553 n皇后问题
- HDU 2553 N皇后问题
- hdu-2553-N皇后问题
- HDU-2553-N皇后问题
- Servlet
- 搜索_图_最短路径_树_
- Redis安装与配置
- html
- html 20170211
- hdu-2553 N皇后问题
- Scala 函数式编程进阶 最重要的内容
- Vue.js 和 MVVM 小细节
- bzoj2176 Strange string 最小表示法
- ahk自动上传文件的脚本实例
- 面试题--死锁
- oracle中all,any的区别使用
- 如何在日常交流中选择合适的投资人?
- 1025 选菜(codevs)