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