1321棋盘

// 1321.cpp : 定义控制台应用程序的入口点。
//

#include
"stdafx.h"


#include
<iostream>
using namespace std;
char q[10][10];
bool row_used[10];
int count,num_p;
int k,n;
void DFS(int i)
{
if(num_p==k)
{
count
++;
return;
}
if(i>n)
return;

for(int j=1;j<=n;j++)
{
if(q[i][j]=='#'&&!row_used[j])
{
row_used[j]
=true;
num_p
++;
DFS(i
+1);
row_used[j]
=false;
num_p
--;

}

}
DFS(i
+1);//i行不放棋子
}
int main()
{
while(cin>>n>>k)
{
count
=0;
num_p
=0;
memset(row_used,
0,10*sizeof(row_used[0]));
if(n==-1&&k==-1)
break;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin
>>q[i][j];
}
DFS(
1);
cout
<<count<<endl;
}
system(
"pause");
return 0;
}
posted @ 2011-05-29 18:58  张兰云  阅读(220)  评论(0编辑  收藏  举报