POJ 1321 棋盘问题(求可行方案多少

    科技2023-09-26  93

    题目链接

    题目大意:

     一块 n * n 大小的棋盘,放 k 个棋子,不可以在同一行或者 同一列  ,问几种放置方案

    解题思路:

    按行搜索,后面for循环里再判断是否在同一列

    代码如下:

    #include<iostream> #include<cstring> using namespace std; int n,k; char a[11][11]; int vis[110]; int ans,sum; void dfs(int u) { if(sum==k) { ans++; return; } if(u==n) return; for(int i=0;i<n;i++) { if(vis[i]==0&&a[u][i]=='#') { sum++; vis[i]=1; dfs(u+1); vis[i]=0; sum--; } } dfs(u+1); } int main() { int i,j; while(cin>>n>>k) { if(n==-1&&k==-1) break; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) for(j=0;j<n;j++) cin>>a[i][j]; ans=0; sum=0; dfs(0); cout<<ans<<endl; } }

     

    Processed: 0.011, SQL: 9