题目链接:http://poj.org/problem?id=2312题目大意:给出一个n*m的矩阵,其中Y是起点,T是终点,B和E可以走,S和R不可以走,要注意的是走B需要2分钟,走E需要一分钟。最后求解Y--->T的最短时间!!看到这题首先想到广搜来找最短时间,但是这里可以对B和E进行处理,方便...
分类:
其他好文 时间:
2014-08-14 19:30:09
阅读次数:
272
题目链接:http://poj.org/problem?id=1979思路:典型的搜索题,个人感觉广搜深搜皆可以,我用深搜做的。代码: #include using namespace std;int startx,starty;//开始的位置 int n,m;//行数和列数 char e[21]....
分类:
其他好文 时间:
2014-08-14 10:29:28
阅读次数:
245
UVA 12130 - Summits
题目链接
题意:给定一个h * w的图,每个位置有一个值,现在要求出这个图上的峰顶有多少个。峰顶是这样定义的,有一个d值,如果一个位置是峰顶,那么它不能走到不大于该峰顶高度 - d的位置,如果满足这个条件下,并且无法走到更高的山峰,那么它就是峰顶
思路:利用贪心的策略,把所有点丢到优先队列,每次取出最高的峰值开始找,进行广搜,搜的过程中记录...
分类:
其他好文 时间:
2014-08-14 01:29:57
阅读次数:
179
广搜的一个简单变形,思路还是一样的,依旧是维护一个队列,将一个节点不断的扩展,扩展完后出队。这道题还有两个特点就是:可能遇到怪兽,因此需要额外花费n秒的时间来打败它。最终还要输出路径。因此结构体里面prex 和 prey就是来记录下一个格子的坐标的。因为有了怪兽所以我们不能一搜到起点就退出搜索,因为...
分类:
其他好文 时间:
2014-08-14 01:17:58
阅读次数:
313
题意:一共有四个方向,从’@‘出发,找能到达‘.’的个数, #是不能通过的.
策略:广搜。
这道题属于最简单的bfs了。
代码:
#include
#include
#include
using std::queue;
bool vis[25][25];
char s[25][25];
int n, m;
int ans = 0;
struct node{
int x, y;
};
no...
分类:
其他好文 时间:
2014-08-13 22:31:17
阅读次数:
301
第二道广搜的问题虽然思路很清晰,可真要自己把代码敲出来并不是一件容易的事用一维数组模拟一个队列,head和tail分别记录队首和队尾先将迷宫的起点入队,然后向四个方向拓展,如果没有出界或者没有遇到墙壁,那么入队,然后队首出队知道搜到迷宫的出口为止 1 //#define LOCAL 2 #inclu...
分类:
其他好文 时间:
2014-08-11 11:25:33
阅读次数:
239
题意:不解释。
策略:广搜。
解释一下为什么会是广搜,一个水杯只能向其他两个水杯倒水,不能向他自己倒水,这样一共有三个水杯也就是有6种情况,只需要一步一步的着就好了(数据没多大《100), 我们将每一次出现的水杯中的水数(就是有多少水)都标记下来,如果是以前没有出现过,那么就进队列,同时将此时的水杯数标记下来,说明该种情况已出现,一直找到想要找的状态为止,如果都找不到,就返回-1.
难点:我...
分类:
其他好文 时间:
2014-08-10 10:28:40
阅读次数:
211
Catch That Cow
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7147 Accepted Submission(s): 2254
Problem Description
Farmer John...
分类:
其他好文 时间:
2014-08-09 18:44:48
阅读次数:
226
题意:不解释。
策略:如题;
这道题可以用深搜也可以用广搜,我以前写的是用的深搜,最近在学广搜,就拿这道题来练练手。
代码:
#include
#include
#include
using std::queue;
bool vis[20][20];
const int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};//四个方向
int map[9][9]...
分类:
其他好文 时间:
2014-08-09 11:38:27
阅读次数:
155
题意:中文题,不解释
策略:广搜。第一道广搜题,先从目标点开始,进队列,标记此节点已被找过,以对首为起始点再找与它相连(并且没有被标记的)的结点入队尾,删除队首,然后在以此时的队首为起始点,标记此节点已被找过, 找与它相邻的点(并且没有被标记的),删除队首,一直循环直至所有节点都被找完。
代码:#include
#include
#include
#define MAXN 0x3f3f3f3f...
分类:
其他好文 时间:
2014-08-07 15:42:40
阅读次数:
262