@cycn
2017-09-21T18:05:07.000000Z
字数 612
阅读 889
题解
题目
链接: https://vjudge.net/contest/65959#overview
A - 棋盘问题 POJ - 1321**
题目的意思:
题目的思路:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;char a[10][10]; //记录棋盘位置int book[10]; //记录一列是否已经放过棋子int n,k;int total,m; //total 是放棋子的方案数 ,m是已放入棋盘的棋子数目void DFS(int cur){if(k==m){total++;return ;}if(cur>=n) //边界return ;for(int j=0; j<n; j++)if(book[j]==0 && a[cur][j]=='#') //判断条件{book[j]=1; //标记m++;DFS(cur+1);book[j]=0; //改回来方便下一行的判断m--;}DFS(cur+1); //到下一行}int main(){int i,j;while(scanf("%d%d",&n,&k)&&n!=-1&&k!=-1) //限制条件{total=0;m=0;for(i=0; i<n; i++)scanf("%s",&a[i]);memset(book,0,sizeof(book));DFS(0);printf("%d\n",total);}return 0;