题目连接
http://poj.org/problem?id=3278
输入
5 17
结果
4
农民约翰到达逃犯牛最快的方式是沿着以下路径:5-10-9-18-17,需要4分钟。
(1).向后-1 (2).向前+1 (3).向前2*x
广度优先搜索练习,BFS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
#define maxn 100010
using namespace std;
int s[maxn],v[maxn];
queue<int>Q;
int BFS(int n,int k)
{
int start,step;
Q.push(n);
v[n]=1;
s[n]=0;
while(!Q.empty())
{
start=Q.front();
Q.pop();
for(int i=0; i<=2; i++)
{
if(i==0)
step=start-1;
else if(i==1)
step=start+1;
else if(i==2)
step=start*2;
if(step>=maxn || step<0)
continue;
if(!v[step])
{
Q.push(step);
v[step]=1;
s[step]=s[start]+1;
}
if(step==k)
return s[step];
}
}
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
if(n>=k)
printf("%d\n",n-k);
else
printf("%d\n",BFS(n,k));
return 0;
}
本文介绍了解决POJ 3278问题的广度优先搜索(BFS)算法实现。该问题要求找到从起点到终点的最短路径,通过使用队列和标记数组,算法能有效避免重复搜索,最终输出从农民约翰到达逃犯牛的最快方式及所需时间。
&spm=1001.2101.3001.5002&articleId=102211220&d=1&t=3&u=6fdb00b4c25b457f8fc08ad6ece73a6b)
2447

被折叠的 条评论
为什么被折叠?



