数字三角形 要求走到最后mod 100最大
输入
第1行n,表示n行 < =25 第2到n+1行为每个的权值
输出
mod 100最大值
样例输入
2
1
99 98
样例输出
99
注意I和II的区别,不能单纯由1的结果更改,需要重新进行规划
#include<stdio.h>
int a[30][30]={0};
int f[30][30][110]={0};
int main()
{
int i,j,k,n,tem,max=-1;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
scanf("%d",&a[i][j]); //输入三角形
f[1][1][(a[1][1])%100]=1;
for(i=2;i<=n;i++)
for(j=1;j<=i;j++)
for(k=0;k<=99;k++)
{
if(f[i-1][j][k]==1 || f[i-1][j-1][k]==1) //f[i,j,k]表示从(1,1)走到(i,j) mod100 的值能不能为k
f[i][j][(a[i][j]+k)%100]=1;
}
for(j=1;j<=n;j++)
for(k=0;k<=99;k++)
if (f[n][j][k]==1 && k>max) max=k;
printf("%d",max);
return 0;
}