数字三角形III

来源:互联网 发布:淘宝网麦克风 编辑:程序博客网 时间:2024/05/24 07:12

本问题的相关问题:数字三角形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 ;}




原创粉丝点击