首页 > 其他 > 详细

hdu 2553 N皇后问题

时间:2015-03-28 15:38:47      阅读:192      评论:0      收藏:0      [点我收藏+]

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2553

dfs的题

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<math.h>
 4 #include<stdlib.h>
 5 #include<string.h>
 6 using namespace std;
 7 const int N=20;
 8 int n;
 9 int count;
10 int a[N];
11 int visit[N];
12 int check(int i,int j)//验证第i行j列
13 {
14     int k;
15     int flag=1;
16     for(k=1;k<i;k++)
17     {
18         if( abs(k-i) == abs(j-a[k]) )
19         flag=0;
20     }
21     return flag;
22 }
23 
24 void dfs(int i)
25 {
26      if(i>n)
27      count++;
28      else
29      {
30          int j;
31          for(j=1;j<=n;j++)
32          {
33              if(visit[j]==0 && check(i,j))
34              {
35                  a[i]=j;
36                  visit[j]=1;
37                  dfs(i+1);
38                  visit[j]=0;
39              }
40          }
41      }
42 }
43 
44 int main()
45 {
46     //freopen("in.txt","r",stdin);
47     int b[15];
48     memset(b,0,sizeof(b));
49     int i;
50     count=0;
51     for(i=1;i<=10;i++)
52     {
53         n=i;
54         memset(a,0,sizeof(a));
55         memset(visit,0,sizeof(visit));
56         dfs(1);
57         b[i]=count;
58         //printf("%d ",b[i]);
59         count=0;
60     }
61     int m;
62     while(~scanf("%d",&m))
63     {
64         if(m==0)
65         break;
66         printf("%d\n",b[m]);
67     }
68     return 0;
69 }

 

hdu 2553 N皇后问题

原文:http://www.cnblogs.com/xuesen1995/p/4374186.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!