1 条题解
-
0
思路
不规则棋盘按行选或不选,列互斥与放满k子的计数。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int n,k;string a[8];bool col[8];long long dfs(int r,int placed){if(placed==k)return 1;if(r==n||placed+n-r<k)return 0;long long ans=dfs(r+1,placed);for(int j=0;j<n;j++)if(a[r][j]=='#'&&!col[j]){col[j]=1;ans+=dfs(r+1,placed+1);col[j]=0;}return ans;}int main(){while(cin>>n>>k&&n!=-1){for(int i=0;i<n;i++)cin>>a[i];memset(col,0,sizeof(col));cout<<dfs(0,0)<<'\n';}}
- 1