poj1321棋盘问题

Posted 幻觉czw

tags:

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

#include <iostream>
//#include <vector>
using namespace std;

const int MAX = 9;
int account = 0;
bool visit_col[MAX];//列
bool arr[MAX][MAX];

void dfs(int row,int num,int m,int n)

if (num == n) 
account ++;
return;

if (row > m) 
return ; //防越界

for(int j = 1; j <= m; ++ j)

if (arr[row][j] && (!visit_col[j]) )

visit_col[j] = 1;
dfs(row + 1,num + 1,m,n);
visit_col[j] = 0;



dfs(row + 1,num,m,n); //当在这一行没有可落子的位置是,搜索下一行
return;



int main()

int m = 0;
int n = 0;
while(cin>>m>>n) 

if (m == -1 && n == -1) break;
memset(arr,0,sizeof(arr));
memset(visit_col,0,sizeof(visit_col));
account = 0;
char temp = ' ';
for (int i = 1; i <= m; ++ i) 

for (int j = 1; j <= m; ++ j)

cin>>temp;
if (temp == '#')
arr[i][j] = true;


dfs(1,0,m,n);
cout<<account<<endl;
 
return 0;
 


以上是关于poj1321棋盘问题的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1321 棋盘问题

POJ 1321 棋盘问题

POJ1321——棋盘问题

POJ 1321 -- 棋盘问题(DFS)

POJ 1321:棋盘问题

POJ 1321 棋盘问题