POJ 3278 Catch That Cow

经典BFS,水题。题意:农夫抓牛。输入两个整数,分别代表农夫的位置和牛的位置。牛是不会动的。农夫可以向左走一格或向右走一格,也可以走当前格数x2。每行动一次用掉1分钟,求农夫走到牛的位置所花的最短时间。比如:输入5和17。农夫先选择第二种走法,从5→10,耗时1分钟。接下来向左走一格10→9,耗时1分钟。接下来再次第二种走法,从9→18,耗时1分钟。接下来向左走一格,从18→1
摘要由CSDN通过智能技术生成

经典BFS,水题。题意:农夫抓牛。输入两个整数,分别代表农夫的位置和牛的位置。牛是不会动的。农夫可以向左走一格或向右走一格,也可以走当前格数x2。每行动一次用掉1分钟,求农夫走到牛的位置所花的最短时间。

比如:输入5和17。

农夫先选择第二种走法,从5→10,耗时1分钟。

接下来向左走一格10→9,耗时1分钟。

接下来再次第二种走法,从9→18,耗时1分钟。

接下来向左走一格,从18→17.耗时1分钟。这时农夫已经走到了牛的位置,抓到了牛。总耗时4分钟。

思路:建一个step数组,记录走到某一格上农夫的耗时。建立一个vis数组,记录该点是否已访问。接下来从起始点BFS三种走法,即向左走一格,向右走一格,和格数x2的走法.每走一格,目标格子step为当前step+1;当走到牛的位置时输出对应牛的位置的step就可以了。要注意的是,如果输入的第一个数大于第二个数,即农夫处于牛的右边,那么农夫就只能靠向左一格一格走的方式去抓牛了,那么并不需要进行bfs,直接输出x-y就好了。

Catch That Cow
Time Limit: 2000MS   Memo
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值