如圖所示的數字三角形,從頂部出發,在每一結點可以選擇向左走或得向右走,一直走到底層,要求找出一條路徑,使路徑上的值最大。
分析:很明顯dp,從下往上依次取最優解即可
**:const
maxn=200;
varf:array [0..maxn,0..maxn] of longint;
n:longint;
procedure init;
vari,j:longint;
begin
readln(n);
for i:=1 to n do
for j:=1 to i do
read(f[i,j]);
end;
function max(a,b:longint):longint;
begin
if a>b then
exit(a)
else
exit(b);
end;
procedure main;
vari,j:longint;
begin
for i:=n-1 downto 1 do
for j:=1 to i do
f[i,j]:=max(f[i+1,j],f[i+1,j+1])+f[i,j];
write(f[1,1]);
end;
begin
init;
main;
end.
Codevs 1220 數字三角形
codevs 1220 數字三角形 呃。大意是下面幾層的每乙個結點都可由上一層的左右兩個結點走來 大概就是 i,j 可由 i 1,j 1 或 i 1,j 而來 所以。a i,j max a i 1,j 1 a i 1 j x a i,j 表示走到第a i,j 的最大值,x表示讀入資料中第 i,j 位...
codevs1220 數字三角形
problem solution codes f i j 從 i,j 出發能獲得的最大值 裸dfs include include using namespace std int n,a 110 110 f 110 110 int dfs int i,int j int main f i j 從 i...
codevs 1220 數字三角形
時間限制 1 s 空間限制 128000 kb 題目等級 gold 如圖所示的數字三角形,從頂部出發,在每一結點可以選擇向左走或得向右走,一直走到底層,要求找出一條路徑,使路徑上的值最大。輸入描述 input description 第一行是數塔層數n 1 n 100 第二行起,按數塔圖形,有乙個或...