【动态规划】数字三角形4

本文介绍了一种解决数字三角形路径求和问题的方法,通过动态规划算法找到包含特定点的最大路径和,并提供了完整的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

数字三角形必须经过某一个点,使之走的路程和最大

输入格式

第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.

 

转载于:https://www.cnblogs.com/Dawn-Star/p/9254295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值