poj 3278 bfs(抓住那头牛)
来源:互联网 发布:北京java晚班 编辑:程序博客网 时间:2024/05/16 01:40
题意:农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
思路:简单bfs即可。可以自己手动写队列,也可以用stl,注意结构体的初始化操作写法。
手动队列:
#include <stdio.h>#include <string.h>#define N 100005int q[N],flag[N];int n,m,now;int rear,front;int test(int x){if(x<0 || x>100000 ||flag[x])return 0;return 1;}void enter(int x){q[++rear] = x;flag[x] = flag[now]+1;}int main(){//freopen("a.txt","r",stdin);while(scanf("%d %d ",&n,&m)!=EOF){memset(flag,0,sizeof(flag));rear = front = -1;q[++rear] = n;flag[n] = 1;while(front < rear){now = q[++front];if(now == m){printf("%d\n",flag[now]-1);break;}if(test(now+1))enter(now+1);if(test(now-1))enter(now-1);if(test(now*2))enter(now*2);}}return 0;}
stl的queue:
#include <cstdio>#include <string>#include <queue>#include <iostream>#include <cstdlib>#include <cmath>#include <algorithm>#define INF 0x3fffffffusing namespace std;#define N 100000int used[N+5];struct node{ int step,id; node(int ll,int ii):step(ll),id(ii){};};queue<node> q;int n,m;int main(){ struct node p(0,0); memset(used,0,sizeof(used)); scanf("%d %d",&n,&m); q.push(node(0,n)); used[n] = 1; while(!q.empty()){ p = q.front(); if(p.id == m){ printf("%d\n",p.step); break; } if(p.id>0 && !used[p.id-1]){ q.push(node(p.step+1,p.id-1)); used[p.id-1] = 1; } if(p.id<N && !used[p.id+1]){ q.push(node(p.step+1,p.id+1)); used[p.id+1] = 1; } if(p.id*2<=N && !used[p.id*2]){ q.push(node(p.step+1,p.id*2)); used[p.id*2] = 1; } q.pop(); } return 0;}
0 0
- 【BFS】(一)抓住那头牛(poj 3278)
- poj 3278 bfs(抓住那头牛)
- OpenJudge noi 2971抓住那头牛(POJ 3278)
- 广度优先搜索--抓住那头牛(poj 3278)
- 广度搜索(BFS)入门题目:抓住那头牛
- POJ 3278:Catch That Cow 抓住那头牛
- poj 4001:抓住那头牛
- 抓住那头牛(POJ NO.2971)
- poj 3278 && bzoj 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛(BFS)
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- NOI OpenJudge 2971:抓住那头牛 BFS
- 抓住那头牛(广搜)
- 在一个页面去刷新另外一个页面
- NYOJ 24 素数距离问题
- 实数四舍五入
- C++ EAT / Hook
- 万能狗! 程序员屌丝独自创业之路(一)
- poj 3278 bfs(抓住那头牛)
- 关于imageView上的button事件不生效的解决办法
- iOS-字符串拼接
- Linux设备驱动核心理论(一)
- php防止网站被刷新的方法汇总
- 【状态压缩DP】uva11825Hackers' Crackdown
- 系统上线后关键用户的工作建议
- java之顶级父类Object
- url注意事项