HDU-2533 N皇后问题
来源:互联网 发布:mac软件后缀名 编辑:程序博客网 时间:2024/04/29 19:27
N皇后问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4974 Accepted Submission(s): 2274
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
Sample Output
1
92
10
#include <stdio.h>int count;void DFS(int );int flag[10], map[10][10];int N;int main(){ int i, j, temp[11]; for(N = 0; N < 11; N++) { for(i = 0; i < N; i++) { flag[i] = 0; } for(i = 0; i < N; i++) { for(j = 0; j < N; j++) { map[i][j] = 0; } } count = 0; for(i = 0; i < N; i++) { flag[i] = 1; map[0][i] = 1; DFS(1); map[0][i] = 0; flag[i] = 0; } temp[N] = count; } while(scanf("%d", &N) && N) { printf("%d\n", temp[N]); } return 0;}void DFS(int n){ int i, j, sum1, sum2, t, f; if(n < N) { for(j = 0; j < N; j++) { if(flag[j] == 1) { continue; } if(n-1 >= 0 && j-1 >= 0) { if(map[n-1][j-1] == 1 || map[n][j-1] == 1 || map[n-1][j] == 1) { continue; } } if(n < N-1 && j < N-1) { if(map[n+1][j+1] == 1 || map[n+1][j] == 1 || map[n][j+1] == 1) { continue; } } if(flag[j] == 0) { flag[j] = 1; map[n][j] = 1; DFS(n+1); map[n][j] = 0; flag[j] = 0; } } } else { if(n == N) { f = 1; for(i = 0; i < N && f; i++) { sum1 = 0; sum2 = 0; for(j = 0, t = i; j < N-i && f; j++, t++) { sum1 += map[j][t]; sum2 += map[t][j]; if(sum1 > 1 || sum2 > 1) { f = 0; break; } } } for(i = 0; i < N && f; i++) { sum1 = 0; sum2 = 0; for(j = 0, t = i; j <= i && f; j++, t--) { sum1 += map[j][t]; sum2 += map[N-t-1][N-j-1]; if(sum1 > 1 || sum2 > 1) { f = 0; break; } } } if(f) { count++; } } }}
- HDU-2533 N皇后问题
- hdu 2533 N皇后问题
- HDU N皇后问题
- N皇后问题 HDU
- N皇后问题 HDU
- N皇后问题 HDU
- N皇后问题 HDU
- 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皇后问题
- WPF窗体最小化到任务栏介绍
- ZOJ-2002 Copying Books
- HDU-1728 逃离迷宫
- 当前上下文不存在 ScriptManager 的原因分析以及解决方案 (System.Web.Extensions)
- 在Ubuntu上试验Latex 中文书写成功
- HDU-2533 N皇后问题
- ArcGIS API for Silverlight中加载Google地形图(瓦片图)
- Windows2008 server 和win7 如何取消禁ping
- ZOJ-2165 Red and Black
- AriGis系列软件的下载地址
- axis2 客户端调用服务器端
- 你能想象下一代程序员是什么样子的吗?
- Ubuntu中用gedit保存文件失败的解决办法
- apt-get 依赖版本过高(Depends: g++-4.6(>= 4.6.3-1)but it is not going)