P1002 [NOIP 2002 普及组] 过河卒
棋盘上有个卒,能向下和向右走,但是中间有个马,不能经过马的控制点和马的位置(马不动,要不然这题就要用博弈论了),求方案数。
这道题如果用搜索,肯定会超时。接下来介绍一种递推的方法。
递推,就是从已知推出未知,例如斐波那契数列计算就运用了一种递推思想。
斐波那契数列的计算是这样的:
已知 f[0]=0, f[1]=1, f[ i ]=f[i-1]+f[i-2] (i≥2)。那么就可以通过一个数组递推出 f[2],f[3] 甚至 f[108] 的结果。
回到本题。
注意到每个点只能从左边和上面的点过来,于是,如果这个点是马的控制点,则 f[ i ][j]=0,否则等于 f[i-1][j]+f[ i ][j-1]。注意特判棋盘边缘。
例如,输入:4 8 2 4
输出:0
要开 long long
。这里代码就不贴了。