算两次的思想.
一条路径的权值定义为 $k^s$ ,其中 $s$ 表示路径下方的面积.
设 $f(i,j)$ 表示从 $(0,0)$ 走到 $(i,j)$ 的所有路径的权值和,边界有 $f(i,0)=f(0,j)=1$ .
若上一步是从下方走过来的,面积不会变,若是从左边走过来的,面积就会加上 $i$ .
即
$$
f(i,j)=f(i-1,j)+f(i,j-1)\cdot k^i
$$
而从另一个方向上来考虑,这个面积 $s$ 也可以看做是路径右边的面积.
那么同理可以得到
$$
f(i,j)=f(i-1,j)\cdot k^j+f(i,j-1)
$$
比较两个方程,可以得出,当 $k\neq 1$ 时,
$$
f(i-1,j)=\frac{k^i-1}{k^j-1}\cdot f(i,j-1) \\
f(i,j)=\frac{k^{i+1}-1}{k^j-1}\cdot f(i+1,j-1)
$$
用这个式子递归下去算,直到 $j=0$ .
当 $k=1$ 时,求的就是路径条数,即 ${i+j\choose j}$ .
1 | //%std |