Catch That Cow
来源:互联网 发布:ipad商标侵权案 知乎 编辑:程序博客网 时间:2024/06/07 00:29
这道题目需要广搜+剪枝,如果不剪枝的话用队列就会超内存,但是如果用数组模拟的话虽然不会超内存但会浪费很多的时间
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Line 1: Two space-separated integers: N and K
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
5 17
4
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
队列实现:
#include<cstdio>#include<queue>#define MAX 100000using namespace std;struct list{int begin;int time;};bool appear[MAX+5];bool check(int a);int main(){int n,k;queue <struct list> q;struct list reco;scanf("%d%d",&n,&k);reco.begin=n;reco.time=0;appear[n]=true;q.push(reco);while(q.front().begin!=k){if(check(q.front().begin-1)){appear[q.front().begin-1]=true;reco.begin=q.front().begin-1;reco.time=q.front().time+1;q.push(reco);}if(check(q.front().begin+1)){appear[q.front().begin+1]=true;reco.begin=q.front().begin+1;reco.time=q.front().time+1;q.push(reco);}if(check(q.front().begin*2)){appear[q.front().begin*2]=true;reco.begin=q.front().begin*2;reco.time=q.front().time+1;q.push(reco);}q.pop();}printf("%d",q.front().time);return 0;}bool check(int a){if(a>=0&&a<=MAX&&appear[a]==false)return true;return false;}数组模拟队列实现:
#include<cstdio>#define MAX 100000using namespace std;struct list{int begin;int time;}qn[MAX+5];bool appear[MAX+5];bool check(int a);int main(){int n,k,top,tail;top=0,tail=0;scanf("%d%d",&n,&k);qn[0].begin=n;qn[0].time=0;tail++;while(qn[top].begin!=k){if(check(qn[top].begin-1)){appear[qn[top].begin-1]=true;qn[tail].begin=qn[top].begin-1;qn[tail].time=qn[top].time+1;tail++;}if(check(qn[top].begin+1)){appear[qn[top].begin+1]=true;qn[tail].begin=qn[top].begin+1;qn[tail].time=qn[top].time+1;tail++;}if(check(qn[top].begin*2)){appear[qn[top].begin*2]=true;qn[tail].begin=qn[top].begin*2;qn[tail].time=qn[top].time+1;tail++;}top++;}printf("%d",qn[top].time);return 0;}bool check(int a){if(a>=0&&a<=MAX&&appear[a]==false)return true;return false;}
阅读全文
0 0
- POJ3278 Catch That Cow
- Catch That Cow
- Catch That Cow
- poj3278 Catch That Cow
- 3278. Catch That Cow
- 【HDU2717】-Catch that cow
- Catch That Cow
- F - Catch That Cow
- poj3278 - Catch That Cow
- HDOJ Catch That Cow
- 2717Catch That Cow
- POJ3278 Catch That Cow
- 3278Catch That Cow
- Catch That Cow(bfs)
- Catch that cow (H2717)
- POJ3278--Catch That Cow
- Catch That Cow
- Catch That Cow+BFS
- 5-1 列出连通集 (25分)
- 数的读法
- java常见异常
- Jq日期比较大小
- main函数传参
- Catch That Cow
- C#线程
- 注释ASPX文件内容
- HttpClient源码解析系列:第二篇:极简版实现
- http协议的get和post方法的区别
- Spring_Spring + Apache Curator 实现分布式应用单节点执行Job
- HDU 1754 I Hate It (线段树+单点更新+区间询问)
- HDU4509 湫湫系列故事——减肥记II【格式输入+存储设置+暴力+水题】
- PAT 1023. 组个最小数 (20)