poj1321棋盘问题

Posted yijiull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1321棋盘问题相关的知识,希望对你有一定的参考价值。

题目链接: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棋盘问题的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1321 棋盘问题

POJ 1321 棋盘问题

POJ1321——棋盘问题

POJ 1321 -- 棋盘问题(DFS)

POJ 1321:棋盘问题

POJ 1321 棋盘问题