本问题的相关问题:数字三角形II
有一个由正整数组成的三角形,第一行只有一个数,除了最下行之 外每个数的左下方和右下方各有一个数,如下图所示。
从第一行的数开始,每次都只能左下或右下走一格,直到走到最下行,把沿途经过的数全部加起来。如何走,使得这个和的个位数尽量大?
在本例中,记d[i,j,k]表示以格子(i,j)为根的子三角形是否存在所有数之和个位为k的路径,则d[i,j,k]为真当且仅当存在t使得(a[i, j] + t) mod 10 = k,且d[i+1,j,t]或d[i+1,j+1,t]为真。
for(i=n-1; i>=1; i--)
for(j=1; j<=i; j++)
for(k=0; k<=9; k++)
{
d[i][j][k] = false ;
while(t<a[i][j])
t = t+10;
t = (t-a[i][j]) % 10;
if(d[i+1][j][t] || d[i+1][j+1][t])) d[i][j][k] = true ;
}