POJ3278 抓住那头牛

现在我在准备4月1日的蓝桥杯,正在突破BFS。

昨天看了北京大学暑期课《ACM/ICPC竞赛训练》北京大学信息学院 郭炜编写的PPT,以抓住那头牛(POJ3278)为例子作为讲解。

题目:农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

POJ3278 抓住那头牛_第1张图片

(1)先把初节点放入open表中,如果open是空,那么就失败推出;如果open表中不是空,那就把open表中的第一个节点(也就是输入的N)移到closed表

(2)上一步中移过去的那个节点是不是目标节点(我们程序中输入的K)呢?如果是,那closed中元素的个数就是最后的答案;如果不是,就把移动的那个节点展开(也就是这个节点的下面有没有分支

(3)如果节点可扩展,将其子节点放入open表的尾部,并未每个子节点配置指向母节点的指针;如果不可扩展,则进行第(1)步

你可能感兴趣的:(BDS)