本文主要是介绍广搜BFS 配题(HDU 1180),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在当前的状态下搜索所有可能的状态,1)队列内的顺序问题;2)搜索时的各种判断问题,边界等等。
题目:HDU 1880 (中文题目)
思想:典型的广搜问题,注意三点:
1)如果下一个地点是梯子,要判断梯子的方向和人的走向是否一致
2)因为题目要求到达T的最少时间,所以要用到优先队列来代替传统的队列
3)如果下一个点是梯子,但是不能走,那么此时增加了一种搜索方向,那就是原地不动,也要推入队列
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int max_n = 25;
const int COL = 1;
const int ROW = 0;
int M, N;
char Map[max_n][max_n];
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1}; // down, right, up, left
struct NODE
{int u, v;int tims;friend bool operator< (NODE a, NODE b){return a.tims > b.tims;}
};bool judge_boundary(NODE node)
{if (node.u < 1 || node.u > N || node.v < 1 || node.v > M){return false;}else {return true;}
}bool same_condition(NODE n
这篇关于广搜BFS 配题(HDU 1180)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!