不能同行同列,给定形状和大小的棋盘,求摆放k个棋子的可行方案
Input
2表示是2X2的棋盘,1表示k,#表示可放,点不可放(-1 -1 结束)
Output
输出摆放的方案数目C
Sample Input
2 1#..#4 4...#..#..#..#...-1 -1
Sample Output
21
#include#include #include #include #include #include #include using namespace std;//***********************************************************************int n,uu,sum,ans;//n为nxn棋盘,uu为要放棋子数,sum为过程中当前棋子数int G[10][10],visH[10],visL[10];//G[][]棋盘0-1描述矩阵,vis_[]标记当前行列是否可下棋//***********************************************************************void DFS(int i,int j){ if(sum==uu){ans++;return;} for(int k=i+1;k >n>>uu){ if(n==-1 && uu==-1)break; for(int i=0;i >s; for(int j=0;j