您的位置:首页 > 其它

POJ3278 抓住那头牛

2018-03-05 12:14 441 查看
现在我在准备4月1日的蓝桥杯,正在突破BFS。
昨天看了北京大学暑期课《ACM/ICPC竞赛训练》北京大学信息学院 郭炜编写的PPT,以抓住那头牛(POJ3278)[/u]为例子作为讲解。题目:农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?


(1)先把初节点放入open表中,如果open是空,那么就失败推出;如果open表中不是空,那就把open表中的第一个节点(也就是输入的N)移到closed表
(2)上一步中移过去的那个节点是不是目标节点(我们程序中输入的K)呢?如果是,那closed中元素的个数就是最后的答案;如果不是,就把移动的那个节点展开(也就是这个节点的下面有没有分支)
(3)如果节点可扩展,将其子节点放入open表的尾部,并未每个子节点配置指向母节点的指针;如果不可扩展,则进行第(1)步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: