【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)
原题入口:
http://acm.hdu.edu.cn/showproblem.php?pid=2612
第一篇在CSDN的博客就写它了吧……
这道题说简单不简单(菜鸡疯狂TLE)
说难也不难(大佬一会儿就写完了)
说到BFS 什么是BFS?
(所以先简单说说BFS再写这道题吧)
BFS中文叫广度优先搜索,从起始状态向后一层一层的搜索,像年轮蛋糕一样(超爱吃年轮蛋糕)。
在C/C++中目前学会的只有通过队列实现。
BFS基本架构如下(因为学校先教C语言所以我写的C++基本就是用了C++头文件的C语言):
#include <queue>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define INF 0x3fffffff
using namespace std;
int n,m,sx,sy,tx,ty,direct;
int vis[105][105];
char s[105][105];
int dx[4] = {
0,0,1,-1};
int dy[4] = {
1,-1,0,0};
struct Node
{
int x,y,step;
};
queue<Node>q;
void bfs(int sx,int sy) //! 这里int和void看情况 不做赘述
{
while (!q.empty()) q.pop();
memset(vis,0,sizeof(vis));
Node st;
st.x = sx;
st.y = sy;
st.step = 0;