这里说一下题意,对于排成一排的N个城市,有一条河与这一排城市平行。
那么城市在排污水的时候,可以有三种选择,用根管子,连到左边的城市(如果有的话),把污水通过这根管子排到左边的城市 。设置这种方式编号为<。
这个城市自己排到河中。编号为|
同样的方式排到右边的城市。编号为?
举例如:
N= 1, 这个城市可以有编号|种排法。
N=2 ||, |<, >| 种排法
当有K个城的时候,有Ak种排法,当右边增加一个城市的时候,第K+1个城市可以有两种选择<. |
选择 < 的时候,有Ak种排法,左边的K个城市的排法没有改变。
选择| 的时候,有两种情况,第一种与向<边排水没有区别。有Ak种排法。左边的城市排列方法没有改变。
第二种则是左边的情况可以改变。比如第K个城市可以选择向右排>,这时前面的K-1个城市的增加的改变数目是Ak - A(k-1)
所以可以得到A(k+1) = 3 * Ak - A(k-1)
得到递推公式之后,会发现这是一个大数,这里还是用java来写吧。分析就到这里了。