码迷,mamicode.com
首页 > 其他好文 > 详细

八皇后

时间:2015-07-26 20:47:37      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

Description

在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 
你的任务是,对于给定的N,求出有多少种合法的放置方法。 

 

Input

共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
 

Output

共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
 

Sample Input

1 8 5 0
 

Sample Output

1 92 10
 
技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int n,tmp;
 5 int map[11];
 6 
 7 void DFS(int k)
 8 {
 9     int i,j,flag;
10     if(k==n+1)
11     {
12         tmp++;
13         return;
14     }
15     else
16     {
17         for(i=1;i<=n;++i)
18         {
19             map[k]=i;
20             flag=1;
21             for(j=1;j<k;++j)
22             {
23                 if(map[j]==i||i-k==map[j]-j||i+k==map[j]+j)
24                 {
25                     flag=0;
26                     break;
27                 }
28             }
29             if(flag)
30                 DFS(k+1);
31         }
32     }
33 }
34 
35 int main()
36 {
37     int i,m;
38     int ans[11];
39     for(n=1;n<=10;++n)
40     {
41         tmp=0;
42         DFS(1);
43         ans[n]=tmp;
44     }
45     while(scanf("%d",&m),m)
46     {
47         printf("%d\n",ans[m]);
48     }
49     return 0;
50 }
View Code

 

八皇后

标签:

原文地址:http://www.cnblogs.com/demodemo/p/4678484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!