农夫过河问题求解。

过河(river.pas/c/cpp)

【问题描述】
  农夫每天去种地都要过一条河,这条河很宽,过河要走上面的木桩。木桩有N个,排成一排,从左岸延伸到左岸,编号从1到N。左岸在1号桩的左边,右岸在N号桩的右边。但这些木桩会定时升降,因此,每天他都花不少时间在过河上。所以他想找一种最快过河的方法。

  在时刻0,农夫在左岸,他要在最短时间内到达右岸。在任何时刻,每一个桩都只能处于升或降的其中一种状态。升起的桩才可以站上去,农夫只能站在升起的桩上或岸上。

  每一支桩在时刻0都是降的状态,接着升起A分钟,降下B分钟,再升起A分钟后,再降下B分钟,这样一直交替升降下去。例如,A=2,B=3的桩,在时刻0降,时刻1、2升,在时刻3、4、5降,等等。A和B是常数时间。而且对于每一支桩都可能不同。

  设在时刻T农夫站在P桩,那在时刻T+1,农夫能走到P桩左右5个桩上或岸上,也可以原地不动,当然桩要可站的。例如,在5号桩,他能走到1,2,3,4,5,6,7,8,9,10号桩,或到左岸。请帮农夫找一种能最快到达右岸的方法。

Input输入文件“river.dat”

  第一行是桩的数目N(5<N<=1000)。接下来的N行每一行有两个整数A和B(1<=A,B<=5),用一个空格分开。按从1到N的顺序描述每一支桩的升降间隔时间。

Output输出文件“river.out”

  只有一行,即最早到达右岸的时刻。当不可能到达右岸时,输出“NO”

Sample Input10
1 1
1 1
1 1
1 1
2 1
1 1
1 1
1 1
1 1
1 1

Sample Output4
var

第1个回答  2014-08-15
看的我一头雾水 搞不懂
希望能解决您的问题。
第2个回答  2014-08-15
看起来貌似好复杂的样子
相似回答