本文主要是介绍数字三角形:顺推法(一维数组),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
分析
f[j] 表示第i行第j个位置上的数到顶点的最大值。
F[j]=max{a[j]+f[j-1],a[j]+f[j]}2<=j<i
F[1]=a[1]+f[1]
n,i,j,w:longint;
a,f:array[1..10000]of longint;
begin
readln(n);
fillchar(f,sizeof(f),0);
readln(a[1]);
f[1]:=a[1];
for i:=2 to n do
begin
for j:=1 to i do
read(a[j]);
for j:=i downto 2 do
if f[j-1]<f[j] then f[j]:=a[j]+f[j] else f[j]:=a[j]+f[j-1];
f[1]:=a[1]+f[1];
end;
w:=0;
for i:=1 to n do
if f[i]>w then w:=f[i];
write(w);
end.
这篇关于数字三角形:顺推法(一维数组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!