hdu5698 瞬间移动

hdu5698 瞬间移动_第1张图片

如图所示,对每个方格进行编号,格式为(a,b)。上图方格的范围为(1,1)到(3,3)。令每个方格的值为瞬移到该方格的方案总数,例如

(1,1) = 1; (3,3) = 6。设范围从(j,k)到(n,m)的方格的值的和为SUM{(j,k),(n,m)},例如上图中所有方格的值的和为SUM{(1,1),(3,3)}。


定理1:任意一方格的值为该方格左上方所有方格的的值的和再加1,记作:(n,m) = SUM{(1,1),(n-1,m-1)} + 1

证明:为了到达某一方格,可以从出发点直接瞬移到该方格,也可以从该方格左上方的任一方格瞬移到该方格。


定理2:任意一方格的值等于该方格左边和上边的方格的值的和,记作:(n,m) = (n-1,m) + (n,m-1)

证明:

(n-1,m) = SUM{(1,1),(n-2,m-1)} + 1 = SUM{(1,1),(n-2,m-2)} + SUM{(1,m-1),(n-2,m-1)} + 1

(n,m-1) = SUM{(1,1),(n-1,m-2)} + 1 = SUM{(1,1),(n-2,m-2)} + SUM{(n-1,1),(n-1,m-2)} + 1

(n,m) = SUM{(1,1),(n-1,m-1)} + 1 = SUM{(1,1),(n-2,m-2)} + SUM{(1,m-1),(n-2,m-1)} + SUM{(n-1,1),(n-1,m-2)} + (n-1,m-1) + 1

∵(n-1,m-1) = SUM{(n-1,1),(n-1,m-2)} + 1

∴(n,m) = 2*SUM{(1,1),(n-2,m-2)} + SUM{(1,m-1),(n-2,m-1)} + SUM{(n-1,1),(n-1,m-2)} + 2 = (n-1,m) + (n,m-1)

hdu5698 瞬间移动_第2张图片


根据定理2,不难看出,这样的矩阵实际上是一个杨辉三角,如下图所示:

hdu5698 瞬间移动_第3张图片

由此可得

定理3:(n,m) = C(n+m-2,m-1) ,即从(n+m-2)个元素中选出(m-1)个组合

该定理的证明留作习题。

 

代码实现:

待续。。。

你可能感兴趣的:(算法竞赛试题分析)