數字三角形系列

2022-05-05 03:45:10 字數 2620 閱讀 1153

p1044數字三角形

09年 usaco 11月月賽  銅牌第一道

示出了乙個數字三角形。 請編乙個程式計算從頂至底的某處的一條路

徑,使該路徑所經過的數字的總和最大。

每一步可沿左斜線向下或右斜線向下走;

1《三角形行數<25;

三角形中的數字為整數<1000;

第一行為n,表示有n行

後面n行表示三角形每條路的路徑權

路徑所經過的數字的總和最大的答案

7 3 8 

8 1 0 

2 7 4 4 

4 5 2 6 5

30
搜尋80分,記憶化搜尋ac

記憶化搜尋,從後往前訪問。對於每乙個點正常往下走時有兩種不同走法,於是從上往下走時只需逆推即可。所以對於a[i][j]而言,只需加上a[i+1][j]與a[i+1][j+1]中的最大值。不斷迴圈最後得到最大值為a[1][1]。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[30][30

],n;

7int

main()817

}18 cout<1][1]<

19return0;

20 }

p1076數字三角形2

數字三角形

要求走到最後mod 100最大

第1行n,表示n行 <=25

第2到n+1行為每個的權值

mod 100最大值

1 99 98

99
這題tyvj的資料非常詭異,想騙分的朋友輸出99會發現自己奇妙的得了90分。

由於資料比較弱所以搞個奇怪的dfs就ac了。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[30][30],n,ans=0;7

void dfs(int x,int y,int

sum)

13else17}

18 dfs(x+1,y,(sum+a[x+1][y])%100

);19 dfs(x+1,y+1,(sum+a[x+1][y+1])%100

);20}21

intmain()

22

view code

p1079數字三角形3

數字三角形必須經過某乙個點,使之走的路程和最大

第1行n,表示n行 <=25

第2到n+1行為每個的權值

程式必須經過n div 2,n div 2這個點

最大值

1 1 1

2
各個測試點1s

剛看的時候想做成2段的bfs,後來看題解發現了另一種有趣的做法。

由於必須經過n div 2,n div 2這個點,則可以把這個點的權值加上乙個極大的數保證必過,最後輸出的時候減去加上的數的大小即可。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[30][30],n,ans=0

,qaq;

7int max(int x,inty)8

12int

main()

1325

}26 cout<1][1]-99999

<

27return0;

28 }

加權值的做法√

p1084數字三角形4

數字三角形必須經過某乙個點,使之走的路程和最大

第1行n,表示n行 <=25

第2到n+1行為每個的權值

第n+2行為兩個數x,y表示必須經過的點

最大值

1 1 1 

1 1

2
各個測試點1s

同前一道題的處理方式,不過必過的點變成了a[x][y]

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[30][30],n,ans=0

,x,y;

7int max(int x,inty)8

12int

main()

1325

}26 cout<1][1]-99999

<

27return0;

28 }

view code

數字三角形

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

數字三角形

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

數字三角形

3 8 8 1 0 2 7 4 4 4 5 2 6 5 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。input 1 5 7 3 8 8 1 0 2 7 4 4 4 ...