简单搜索 练习一下回溯

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <string>
#include <algorithm>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
using namespace std;
int n,k;
int ans;
char s[][];
int usex[],usey[];
bool ok(int x,int y){
if(x<||x>=n||y<||y>=n)
return ;
if(s[x][y]=='.'){
return ;
}
if(usex[x]==||usey[y]==)
return ;
return ;
}
void dfs(int x,int y){
if(y==k){
ans++;
return ;
}
if(x>n){
return ;
}
for(int i=;i<n;i++){
if(ok(x,i)){
usey[i]=;
usex[x]=;
dfs(x+,y+);
usey[i]=;
usex[x]=;
}
}
dfs(x+,y);
}
int main(){
while(~scanf("%d%d",&n,&k),n!=-||k!=-){
ans=;
memset(usey,,sizeof(usey));
memset(usex,,sizeof(usex));
for(int i=;i<n;i++){
scanf("%s",s[i]);
}
dfs(,);
printf("%d\n",ans);
}
return ;
}

POJ 1321 棋盘问题 DFS搜索的更多相关文章

  1. POJ 1321 棋盘问题 --- DFS

    POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...

  2. POJ 1321 棋盘问题(DFS板子题,简单搜索练习)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44012   Accepted: 21375 Descriptio ...

  3. POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47960   Accepted: 23210 Descriptio ...

  4. POJ - 1321 棋盘问题 简单搜索 dfs 格子

    点这里去看题 思路:本题的难点在k<n的情况,所以我们可以另dfs中的两个参数分别代表起始行和待放棋子个数(待放棋子只能放在起始行后面的行),然后用一个c[8]来表示每一列放旗子的情况来判断列不 ...

  5. POJ 1321 棋盘问题 dfs 难度:0

    http://poj.org/problem?id=1321 注意是在'#'的地方放棋子 矩阵大小不过8*8,即使是8!的时间复杂度也足以承受,可以直接dfs求解 dfs时标注当前点的行和列已被访问, ...

  6. POJ 1321 棋盘问题(搜索的方式)

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  7. POJ 1321 棋盘问题 (DFS + 回溯)

    题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...

  8. Poj 1321 棋盘问题(搜索)

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  9. POJ 1321 棋盘问题 DFS 期末前水一水就好……

    A - 棋盘问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

随机推荐

  1. 如何读懂Oracle文档中的语法图(转)

    本文转载自:http://kyle.xlau.org/posts/syntax-diagrams.html Oracle文档中用到了两种表达语法的方法,语法图和BNF. BNF, Backus-Nau ...

  2. Codeforces Round #345 (Div. 1) B. Image Preview

    Vasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed ...

  3. SDC(6)–I/O约束

    应理解为仅限于内部的约束.即从输入Pin到寄存器D口,以及从寄存器Q口到输出Pin. 例如: 约束如下: 注意set_output_delay的计算

  4. WLLCM这五个字母全排列数目

           经过训练的话一眼看出来是5!/2!:我想的是先排WLCM那么是4!,5个位置,由于L左右两边的位置其实是一样的(再插入的还是L),索以结果是4*4!,这样重复了,看下图.         ...

  5. Codeforces Round #210

    A:简单题: #include<cstdio> using namespace std; int n,k; int main() { scanf("%d%d",& ...

  6. FZU 2150 Fire Game(BFS)

    点我看题目 题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的.问你最少花多少时间 ...

  7. android 在fragment中获取界面的UI组件

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanc ...

  8. PHP file_exists() 函数

    定义和用法 file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 语法 file_exists(path) 参数 描述 path ...

  9. java修改远程服务器密码

    积累: 1. echo 用户名:新密码 | chpasswd

  10. 在Qt中使用sleep(包含为win and *nix下sleep函数的实现及用法)

    http://blog.csdn.net/tingsking18/article/details/5304254 关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程 ...