深搜----N皇后问题
2015-08-10 09:26
127 查看
N皇后问题
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
Sample Output
1
92
10
code:
code2:
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
Sample Output
1
92
10
code:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #define N 25 using namespace std; int v[3] ,n,sum; void dfs(int m) { if(n==m) sum++; for(int i=0;i<n;i++) { if(!v[0][i]&&!v[1][m+i]&&!v[2][m-i+n]) { v[0][i]=v[1][m+i]=v[2][m-i+n]=1; dfs(m+1); v[0][i]=v[1][m+i]=v[2][m-i+n]=0; } } } int main() { int a[11],t; for(n=0;n<11;n++) { memset(v,0,sizeof(v)); sum=0; dfs(0); a =sum; } while(scanf("%d",&t)!=EOF&&t) { printf("%d\n",a[t]); } return 0; }
code2:
#include <stdio.h> #include <math.h> int v[11],n; int sum; int place(int t) { int i; for(i=1;i<t;i++) { if(abs(t-i)==abs(v[t]-v[i])||v[t]==v[i]) return 0; } return 1; } int dfs(int k) { int i; if(k>n) sum++; else { for(i=1;i<=n;i++) { v[k]=i; if(place(k)) dfs(k+1); } } return sum; } int main() { int a[11],m; for(n=1;n<=10;n++) { sum=0; a =dfs(1); } while(scanf("%d",&m)!=EOF&&m!=0) { printf("%d\n",a[m]); } return 0; }
相关文章推荐
- HDU 5366:The mook jong 递推
- HDU 2844(Coins)多重背包
- SQL Server 2008数据库创建用户只读权限的两种方式
- ZOJ 3471 Most Powerful
- 计蒜客 难题题库 035 三角形的内点
- 关于ExtJS4.1创建Window拖动时会出现两个相同的Window
- There Is No‘I’in Architecture
- javascript中间preventDefault与stopPropagation角色介绍
- chat
- sublime text3安装SublimeREPL--解决不能运行input()的问题
- Repeater控件的嵌套使用
- OPEN API
- Java太阳系小游戏分析和源码详解
- android ndk打印log信息
- dedecms全站URL静态化改造
- 线段树之HDU1754I Hate It
- 计蒜客 难题题库 034 灌溉
- 变形课
- Python之Window环境搭建
- Reuse Is About People and Education, Not Just Architecture