经典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 |