此题链接单击这里
=================
看似像八皇后问题,但区别还是很大。
附代码
#include <iostream>
#include <cstring>
using namespace std;
char a[10][10];
int b[10][10];
int n,k,m;
bool is(int ax,int ay)
{
for(int i=1;i<=ax;i++)
if(b[i][ay]==1)
return false;
return true;
}
void funt(int ax,int z)
{
if(z==k)
{
m++;
return;
}
if(ax>n)
return ;
for(int i=1;i<=n;i++)
if(a[ax][i]=='#'&&is(ax,i))
{
a[ax][i]=1;
funt(ax+1,z+1);
a[ax][i]=0;
}
funt(ax+1,z);
}
int main()
{
while(cin>>n>>k&&n!=-1&&k!=-1)
{
m=0;
int loge=1,ax,ay;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
memset(b,0,sizeof(b));
funt(1,0);
cout<<m<<endl;
}
}
有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com