本题 n ≤ 100 n \leq 100 n≤100 ,我们先分析一下 大力搜索 的效率。
众所周知, 从 1 , 1 1,1 1,1 走到 n , m n,m n,m (每次只能向右走或向下走) 的方案数为:
C n + m m C_{n+m}^m Cn+mm
简单解释:共走 n + m n+m n+m 步,其中 n n n 步向下, m m m 步向右。而:
C n + m m = C n + m n C_{n+m}^m = C_{n+m}^n Cn+mm=Cn+mn
组合即可。
那么,搜索的时间复杂度 至少是 O ( C 2 × n n ) O(C_{2 \times n}^n) O(C2×nn).
大概算一下:
C 200 100 = 200 ! 100 ! × 100 ! C_{200}^{100}=\frac{200!}{100! \times 100!} C200100=100!×100!200!
这个数很大,是我们无法接受的。
所以, 下面考虑 d p dp dp.
用 d p i , j , k , l dp_{i,j,k,l} dpi,j,k,l 表示 从左上角到右下角经过 i , j i,j i,j,再从右下角到左上角经过 k , l k,l k,l的最大路径。
首先有一个结论: d p i , j , k , l = d p k , l , i , j dp_{i,j,k,l}=dp_{k,l,i,j} dpi,j,k,l