我是靠谱客的博主 勤奋自行车,最近开发中收集的这篇文章主要介绍POJ-3278 Catch that cow,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这道题是道典型的宽搜问题,我们可以从它的数据量就可以看出深搜要超时,并且最短路要用宽搜。

#include<iostream>
#include<queue>
using namespace std;
queue<int>sm;//宽搜用队列
int d[200001]={0},start,end;//d[]代表走到当前点需要的最少步数
int search (){
sm.push(start);
for(int i=0;i<=200000;i++)d[i]=1001110;//初始化
d[start]=0;
while(sm.size()){
int p=sm.front();sm.pop();
if(p==end)break;
if((p-1)>=0&&d[p]+1<d[p-1]){//边界条件是0
d[p-1]=d[p]+1;
sm.push(p-1);
}
if(p<n&&d[p]+1<d[p+1]){//若小于n才能+1
d[p+1]=d[p]+1;
sm.push(p+1);
}
if(p<100001&&d[p]+1<d[2*p]){//小于n才能乘2
d[p*2]=d[p]+1;
sm.push(p*2);
}
}
return d[end];
}
int main(){
	cin>>start>>end;
cout<<search();
}


转载于:https://www.cnblogs.com/c201904xyorz/p/9990778.html

最后

以上就是勤奋自行车为你收集整理的POJ-3278 Catch that cow的全部内容,希望文章能够帮你解决POJ-3278 Catch that cow所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部