ssl1458 數字金字塔 三角形 順推法

2021-07-27 15:06:07 字數 1471 閱讀 3415

數字金字塔

time limit:1000ms  memory limit:65536k

total submit:394 accepted:225

description

你和權權是一對很好很好的朋友。有一天,你們無聊得很,便上網衝浪,突然在乙個叫做usaco的網中找到了乙個遊戲:《數字金子塔》。遊戲規則是這樣的:求乙個數字金字塔中從最高點開始在底部任意處結束的路徑經過數字的和的最大,其中的每一步可以走到下方的點也可以到達右下方的點。例如在下面的例子中,從7 — 3 — 8 — 7 –- 5的路徑產生了最大和:30。 

7 3 8 

8 1 0 

2 7 4 4 

4 5 2 6 5 

你們便約定了誰能計算出最後的值便是贏者。你仰天(天花板)長嘆:我能成為贏者嗎,要知道權權可是很厲害的哦…… 

input

第一行輸入n(1<=n<=1000),表示數字金字塔行的數目。後面n輸入這個數字金字塔,每個數字皆為整數(1<=x<=10000),每2個整數之間有1個空格。

output

單獨一行輸出最後得到的最大的和。

sample input

5

73 8

8 1 0

2 7 4 4

4 5 2 6 5

sample output

30

source

mcq

var

a,f:array[1..1000,1..1000] of longint;

n,i,j,max:longint;

begin

read(n);

for i:=1 to n do

for j:=1 to i do

read(a[i,j]);

f[1,1]:=a[1,1];//因為是順推,所以開頭無法累加(因為他上面沒了呀╮(╯▽╰)╭)

for i:=2 to n do//i是第幾行

begin

f[i,1]:=a[i,1]+f[i-1,1];//每一行第乙個=它自己+上一行的第乙個(右上)(它沒左上啊)

for j:=2 to i do//j是第幾個

if f[i-1,j-1]>f[i-1,j] then f[i,j]:=a[i,j]+f[i-1,j-1]//如果左上大於右上就加左上

else f[i,j]:=a[i,j]+f[i-1,j];//否則反之

end;

for i:=1 to n do//因為答案一定在最後一行,所以在最後一行打擂台

if f[n,i]>max then max:=f[n,i];

writeln(max);

end.

繪製三角形金字塔

將例1中的 轉換為draw 函式,並繪製三角形金字塔,如下所示 題解 分行繪製,繪製完一行後,將turtle的位置移回原位置 from turtle import from math import def draw t,a,k t.color orange t.penup t.right 90 t....

數字三角形

題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...

數字三角形

description 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,...