1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=10; bool st[N]; char g[N][N]; int n,k; int ans=0; void dfs(int r,int y) { if(y==k+1) //已经放完了k个国王 { ans++; return ; } if(r>=n) return ; for(int j=0;j<n;j++) //枚举每列 { if(g[r][j]=='#'&&st[j]==0) { st[j]=1; //标记列 dfs(r+1,y+1); //去下一行 st[j]=0; } } dfs(r+1,y); //当前这行不放国王 } int main() { while(cin>>n>>k) { ans=0; memset(st,0,sizeof st); //清空标记 if(n==-1&&k==-1) break; for(int i=0;i<n;i++) cin>>g[i]; dfs(0,1); cout<<ans<<endl; } }
- 1
Information
- ID
- 241
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 28
- Accepted
- 8
- Uploaded By