{boolvis[100005]= {0}; queue<node> q; node s; s.d=n; s.time=0; q.push(s); vis[n]=1;while(!q.empty()) { node t=q.front();if(t.d==k) { cout<<t.time<<endl;break; } q.pop();intflag=0;for(inti=0; i<3; i++) {if(i==0&&t.d+1<maxn&&!vis[t.d+1]) ...
poj3278(BFS) 题意:给出两个点代表人和牛的位置,人的运动方式有三种,牛原地不用,问人赶到牛的位置的最快速度; key:刚开始找规律,其实规律都没规律,六组数据都过了那个碰巧。用bfs,搜到牛的位置结束,并返回步数(每个操作算一步)。注意牛可在人的左右边,要分开两种情况。 #include <iostream>#include<stdio....
采用BFS。 因为农夫每次移动的代价相同,而广度优先搜索算法在权值一样时的解即为最佳解,所以此题用广度优先搜索算法就可以解决了。 将农夫每次的选择看成一个三叉树,即-1,+1,2。农夫的初始节点为树的根节点,然后依次访问当前节点的三个孩子(+1,-1,2),每访问一个节点时将该节点放入队列以实现广度优先搜索。...
【POJ 3278】Catch That Cow 题解(广度优先搜索) 农夫约翰已被告知一头逃亡奶牛的位置,并想立即抓住她。他从一条数字线上的N点(0≤N≤100000)开始,奶牛在同一条数字线上的K点(0≥K≤100000)。农夫约翰有两种交通方式:步行和坐车。 *步行:FJ可以在一分钟内从任何点X移动到点X-1或X+1 *坐车:FJ可以在一...
POJ 3278 Catch That Cow (队列+bfs) 题意: 给出农夫和牛的位置,求农夫抓到牛的最短时间,农夫可以选择前进一步,后退一步,当前位置坐标变成两倍。每做出一次选择都要花费一秒、 思路: 以前是用数组做的,现在重新用队列做了一遍,vis标记的时候=打成==,结果死循环。
kuangbin带你飞专题:poj3278 题目含义:给你N,M,用N-1,N+1,N2的三种方式找出经过若干次跳跃变为M的最小次数。例如5->17,如图。 讨论 经过四次即可。 题解:通过bfs将N-1,N+1,2N,作为N的子节点依次进入队列即可,最先找到的节点即为答案,解答树如下。
题目链接:http://poj.org/problem?id=3278 题意:有一个农民和一头牛,他们在一个数轴上,牛在k位置保持不动,农户开始时在n位置。设农户当前在M位置,每次移动时有三种选择:1.移动到M-1;2.移动到M+1位置;3.移动到M*2的位置。问最少移动多少次可以移动到牛所在的位置。所以可以用广搜来搜索这三个状态,直...
(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书 page149): 1.E[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533) ...
POJ 300题训练计划 第一阶段 初级:项目 时间 必做题目 基本算法 枚举 第1周 poj1753,poj2965 贪心 poj1328,poj2109,poj2586 分治法 递推 poj2506 构造法 poj3295 模拟法 poj1068,poj2632,poj1573,poj2993,poj2996 图算法 图的深度优先遍历和广度优先遍历 第1周 poj3278,poj2049,poj3083 最短路径算法 ...
(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt...