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

poj1321棋盘问题

时间:2017-03-24 19:59:15      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:div   include   lan   ring   棋盘问题   problem   eof   oid   std   

题目链接:http://poj.org/problem?id=1321

逐行放置。

dfs(int row,int num) 从第row行放,还剩下num个棋子没有放好。

 1 #include<cstdio>
 2 #include<cstring>
 3 char pic[10][10];
 4 int col[10]; //用来记录某列是否放过
 5 int n,k;
 6 int cnt;
 7 void dfs(int row,int num)  //从第row行放,还剩下num个棋子没有放好
 8 {
 9     for(int j=0;j<n;j++)
10     {
11         if(pic[row][j]==#&&!col[j])
12         {
13             if(num==1)  //放置完成,方案数加一
14                 cnt++;
15             else {
16                 col[j]=1;
17                 for(int i=row+1;i+num-2<n;i++)
18                 dfs(i,num-1);
19                  col[j]=0;
20             }
21         }
22     }
23 }
24 
25 int main()
26 {
27     while(scanf("%d%d",&n,&k)&&(n!=-1&&k!=-1))
28     {
29         memset(col,0,sizeof(col));
30         cnt=0;
31         for(int i=0;i<n;i++)
32             scanf("%s",pic[i]);
33         for(int i=0;i+k-1<n;i++) 
34         {
35             dfs(i,k);
36         }
37         printf("%d\n",cnt);
38     }
39 }

 

poj1321棋盘问题

标签:div   include   lan   ring   棋盘问题   problem   eof   oid   std   

原文地址:http://www.cnblogs.com/yijiull/p/6613101.html

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