深度搜索:棋盘问题,详见http://poj.org/problem?id=1321

//#include<bits/stdc++.h>

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
char a[10][10];
int vis[10];
int n,k;
int ans,now;
void DFS(int m)
{
if(now==k){
ans++;
return ;
}
if(m==n)
return ;
for(int i=0;i<n;i++){
if(!vis[i]&&a[m][i]=='#')
{
vis[i]=1;
now++;
DFS(m+1);
vis[i]=0;
now--; } }
DFS(m+1);
}
int main()
{
while(scanf("%d%d",&n,&k)&&n!=-1&&k!=-1)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%s",a[i]);
ans=now=0;
DFS(0);
printf("%d\n",ans);
}
}

 

BFS题目:Dungeon Master  (POJ2251: http://poj.org/problem?id=2251)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
int L,R,C;
char Map[][][];
int vis[][][];
int to[][]={,,,,,-,,,,,-,,,,,-,,};
int sx,sy,sz,ex,ey,ez;
int ans;
struct node{
int x;
int y;
int z;
int step;
};
int check(int x,int y,int z)
{
if(x<||y<||z<||x>=L||y>=R||z>=C)
return ;
else if(Map[x][y][z]=='#')
return ;
else if(vis[x][y][z]==)
return ;
return ;
}
int bfs()
{
queue<node> q;
node temp,next;
while(!q.empty())
{
q.pop();
}
temp.x=sx;
temp.y=sy;
temp.z=sz;
temp.step=;
q.push(temp);
while(!q.empty())
{
temp=q.front();
q.pop();
if(temp.x==ex&&temp.y==ey&&temp.z==ez)
{
return temp.step;
}
for(int i=;i<;i++)
{
next=temp;
next.x = temp.x+to[i][];
next.y = temp.y+to[i][];
next.z = temp.z+to[i][];
if(check(next.x,next.y,next.z))
continue;
vis[next.x][next.y][next.z] = ;
next.step = temp.step+;
q.push(next);
}
}
return ; }
int main()
{
while(scanf("%d%d%d",&L,&R,&C)&&L!=&&R!=&&C!=)
{
for(int i=;i<L;i++)
for(int j=;j<R;j++)
{
scanf("%s",Map[i][j]);
for(int k=;k<C;k++)
{
if(Map[i][j][k]=='S')
{
sx=i;
sy=j;
sz=k;
}
else if(Map[i][j][k]=='E')
{
ex=i;
ey=j;
ez=k;
}
}
}
memset(vis,,sizeof(vis));
ans=;
ans=bfs();
if(ans)
printf("Escaped in %d minute(s).\n",ans);
else
printf("Trapped!\n"); }
}

Catch That Cow :http://poj.org/problem?id=3278

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
int N,K;
int ans;
int vis[];
struct node
{
int value;
int step;
};
int bfs()
{
node temp,next;
queue<node> q;
temp.value=N;
temp.step=;
vis[temp.value]=;
q.push(temp);
while(!q.empty())
{
temp=q.front();
// cout<<temp.value<<endl;
q.pop();
if(temp.value==K)
return temp.step;
next=temp;
for(int i=;i<;i++)
{
if(i==)
{
next.value=temp.value-;
}
if(i==)
{
next.value=temp.value+;
}
if(i==)
{
next.value=temp.value*;
}
if(next.value<||next.value>)
continue;
if(!vis[next.value])
{
// cout<<1<<endl;
vis[next.value]=;
next.step=temp.step+;
q.push(next);
}
}
}
return ; } int main()
{ while(scanf("%d%d",&N,&K))
{
memset(vis,,sizeof(vis));
ans=;
ans=bfs();
if(N>=K)
printf("%d\n",N-K);
else
printf("%d\n",ans);
} return ; }

ACM搜索问题盘点的更多相关文章

  1. ACM——搜索(一)

    南邮OJ——1108 搜索(一) 时间限制(普通/Java):3500MS/10500MS          运行内存限制:65536KByte总提交:1023            测试通过:367 ...

  2. 【ACM - 搜索模板】

    [广搜模板] #include <iostream> #include <stdio.h> #include <string.h> #include <que ...

  3. Mine Number(搜索,暴力) ACM省赛第三届 G

    Mine Number Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Every one once played the gam ...

  4. HDU 4900 NO ACM NO LIFE(概率+枚举+搜索)(2014 Multi-University Training Contest 4)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4900 Problem Description There is an old country and ...

  5. acm位运算应用 搜索

    acm位运算应用 搜索 搜索    此处不讲题目,只讲位运算是怎样在这些题中实现和应用的.由于搜索题往往是基于对状态的操作,位运算往往特别有效,优化之后的效果可以有目共睹.    例1.POJ 132 ...

  6. “玲珑杯”ACM比赛 Round #18--最后你还是AK了(搜索+思维)

    题目链接   DESCRIPTION INPUT OUTPUT SAMPLE INPUT 1 4 2 1 2 5 2 3 5 3 4 5 5 5 SAMPLE OUTPUT 35 HINT 对于样例, ...

  7. ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. Poor Ramzi -dp+记忆化搜索

    ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. ...

  8. 2013 ACM网络搜索与数据挖掘国际会议

    ACM网络搜索与数据挖掘国际会议" title="2013 ACM网络搜索与数据挖掘国际会议"> 编者按:ACM网络搜索与数据挖掘国际会议(6th ACM Conf ...

  9. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

随机推荐

  1. SpringMvc Json LocalDateTime 互转,form urlencoded @ModelAttribute 转换

    JDK8 的LocalDate 系列日期API ,比Date 或者 Calendar 都好用很多,但是在SpringMvc 自动装配会有点小问题 会导致抛出类似异常 default message [ ...

  2. 【开源】C#.NET股票历史数据采集,【附18年历史数据和源代码】

    如果用知乎,可以关注专栏:.NET开源项目和PowerBI社区 重点重点:我没有买股票,没有买股票,股市是个坑,小心割韭菜哦. 本文的初衷是数据分析(分析结果就不说了,就是想看看筛选点数据),只不过搞 ...

  3. Docker系列二:Docker的基本结构

    Docker的基本结构 Docker 的三大基础组件 Docker有三个重要的概念:仓库 , 镜像 和 容器 ,它们是Docker的三大基出组件 Docker的组织结构 Docker处于操作系统和虚拟 ...

  4. mysql varchar vs oracle varchar2

    1.错误提示: mysql的Data truncation: Data too long for column 'path' at row 1 错误原因: 1.字段过长而导致出错的, 2. 可能是因为 ...

  5. java数组:去重,增加,删除元素

    import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; p ...

  6. jsencrypt参数前端加密c#解密

    写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C# ...

  7. linux shell中获取mongodb最大连接数、内存使用情况等

    前两天接到了一个新的需求,需要在linux shell脚本中监控到mongodb最大连接数.内存使用情况等. 但是我对于linux shel很不了解,只是会一些简单常用的linux的操作而已,只要一顿 ...

  8. dojo中的dojox/grid/EnhancedGrid表格报错

    1.错误截图 2.错误出处 <body class="claro"> <div id="gridContainer"> <span ...

  9. Java之split()方法

    Java之split()方法 1.方法介绍 (1)public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串 (2)public String[] s ...

  10. WPF自学入门(一)WPF-XAML基本知识

    一.基本概念 1.XAML是派生自XML的可扩展应用程序标记语言(Extensible Application Markup Language)由微软创造应用在WPF,Silverlight等开发技术 ...