P1044 - 数字三角形

P1044 - 数字三角形

From Admin    Normal (OI)
总时限:10s    内存限制:128MB    代码长度限制:64KB

背景 Background

09年 USACO 11月月赛  铜牌第一道

描述 Description

示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
  每一步可沿左斜线向下或右斜线向下走;
  1<三角形行数<25;
  三角形中的数字为整数<1000;

输入格式 InputFormat

第一行为N,表示有N行
后面N行表示三角形每条路的路径权

输出格式 OutputFormat

路径所经过的数字的总和最大的答案

样例输入 SampleInput [复制数据]

573 88 1 02 7 4 44 5 2 6 5

样例输出 SampleOutput [复制数据]

30

数据范围和注释 Hint

搜索80分,记忆化搜索AC

时间限制 TimeLimitation

各个测试点1s


动规。数字三角形,最简单的那种。

虽然这道题很简单,但这是我做的动态规划的第一道题,第一次。
也许在大多数人看来这题很水(确实很水),但是对于我来说,它是一个开始,对于动态规划。
这么简单的,直接附代码吧:
 
 1 program p1044;
 2 
 3 var  n,x,y:integer;
 4 
 5  a:array[1..30,1..30,1..4]of integer;
 6 
 7 begin
 8 
 9  readln(n);
10 
11  for x:=1 to n do
12 
13   begin
14 
15   for y:=1 to  x do
16 
17     begin
18 
19      read(a[x,y,1]);
20 
21      a[x,y,2]:=a[x,y,1];
22 
23      a[x,y,3]:=0;
24 
25     end;
26 
27     readln;
28 
29     end;
30 
31  for x:=n-1 downto 1 do
32 
33   for y:=1 to n do
34 
35     if a[x+1,y,2]>a[x+1,y+1,2]
36 
37      then
38 
39              a[x,y,2]:=a[x,y,2]+a[x+1,y,2]
40 
41      else
42 
43             a[x,y,2]:=a[x,y,2]+a[x+1,y+1,2];
44 
45      writeln(a[1,1,2]);
46 
47 readln;
48 
49 readln;
50 
51 end.

 

posted @ 2015-02-19 15:30  111qqz  阅读(261)  评论(0编辑  收藏  举报