poj 1321 棋盘问题
程序员文章站
2022-05-20 21:10:21
...
题目 中文题目,题意不在赘述,思路代码中。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char mp[10][10];
int vis[10];
int cnt = 0;
int n,k;
/**
采用的是按行递增的顺序来搜索的,
因此不可能出现同行的情况,
对于同列的情况,设置一个变量vis[],来保存列的访问状态,
对于之前访问过的列, 棋子是不能再放在这一列上的.
*/
int dfs(int x,int y)//第x行,放第y颗棋子
{
if(y>=k){
cnt++;//记录这个方案可行
return 0;
}
for(int i=x;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(mp[i][j]=='#'&&!vis[j])
{
vis[j]=1;
dfs(i+1,y+1);//搜素下一行
vis[j]=0;
}
}
}
return 0;
}
int main()
{
while(cin>>n>>k)
{
if(n==-1&&k==-1) break;
for(int i=0;i<n;i++)
cin>>mp[i];
memset(vis,0,sizeof(vis));
cnt = 0;
dfs(0,0);
cout<<cnt<<endl;
}
return 0;
}
上一篇: 深搜算法实例:老鼠走迷宫(一)
下一篇: Redis - 持久化-AOF
推荐阅读
-
kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321
-
Face The Right Way POJ - 3276 (开关问题)
-
Python3解决棋盘覆盖问题的方法示例
-
python实现棋盘覆盖问题及可视化
-
POJ 1321 棋盘问题 G++
-
【 POJ - 1077 】 H - Eight (八数码问题) 【 BFS + hash判重 】
-
Calendar Game POJ - 1082(关于日历的博弈问题)
-
POJ2251 Dungeon Master 迷宫问题(BFS)
-
POJ 1164 The Castle 深搜入门(城堡问题)
-
java实现马踏棋盘算法(骑士周游问题)