MathLabs

第5問

nn を正の整数とする。日本三角形とは、正三角形状に並んだ 1+2+⋯+n1+2+\cdots+n 個の円からなり、各 i=1,2,…,ni=1,2,\ldots,n に対して第 ii 行にはちょうど ii 個の円があり、そのうちちょうど一つが赤く塗られているものである。日本三角形における忍者経路とは、最上段から出発し、ある円からその真下にある二つの円のいずれか一方へ進むことを繰り返して最下段で終わる、nn 個の円からなる列である。nn を用いて、どの日本三角形にも赤い円を少なくとも kk 個含む忍者経路が存在するような最大の kk を求めよ。
ステップ 3/5: 最良の部分経路を再帰的に数える
ざっくり言うと

与えられた円で終わる部分的な忍者経路が到達できる赤い円の最大個数は、その円の二つの可能な前の円で終わる二つの最良の部分経路だけに依存する。

f(i,j)=max⁡{f(i−1,j−1),f(i,j−1)}+[circle (i,j) is red]f(i,j)=\max\{f(i-1,j-1),f(i,j-1)\}+[\text{circle }(i,j)\text{ is red}]
詳しい解説

任意の日本三角形について、f(i,j)f(i,j) を、最上段の円から行 jj の位置 ii にある円までの忍者経路の区間上にある赤い円の最大個数とする(その位置が存在しない場合は f(i,j)=0f(i,j)=0 とする)。(i,j)(i,j) を通るすべての経路は (i−1,j−1)(i-1,j-1) または (i,j−1)(i,j-1) から来るので、(i,j)(i,j) が赤い円なら f(i,j)=max⁡{f(i−1,j−1),f(i,j−1)}+1f(i,j)=\max\{f(i-1,j-1),f(i,j-1)\}+1 であり、そうでなければ f(i,j)=max⁡{f(i−1,j−1),f(i,j−1)}f(i,j)=\max\{f(i-1,j-1),f(i,j-1)\} である。