题目描述
数字三角形必须经过某一个点,使之走的路程和最大
输入格式
第1行n,表示n行 <=25
第2到n+1行为每个的权值
第n+2行为两个数x,y表示必须经过的点
输出格式
最大值
分析
其实和3一样,附加一下网址,只需要把改的地方改成 f[x][y]+maxn就可以了。
代码
1 const 2 maxn=10000000; 3 var 4 n,i,j,x,y:longint; 5 f,a:array[0..25,0..25]of longint; 6 function max(n,m:longint):longint; 7 begin 8 if n>m then exit(n) else exit(m); 9 end; 10 begin 11 fillchar(f,sizeof(f),0); 12 readln(n); 13 for i:=1 to n do 14 for j:=1 to i do 15 begin 16 read(a[i][j]); 17 f[i][j]:=a[i][j]; 18 end; 19 readln(x,y); 20 inc(f[x][y],maxn); 21 for i:=n downto 1 do 22 for j:=1 to i do 23 f[i][j]:=max(f[i+1][j],f[i+1][j+1])+f[i][j]; 24 writeln(f[1][1]-maxn); 25 end.