數字三角形W(codevs)

2021-08-15 18:23:25 字數 797 閱讀 4175

數字三角形w( codevs 上的):

要求走到最後和mod 100 最大。

在mod 100 這個條件下,剛剛的狀態就沒有了最優子結構。

不能用簡單的數字三角形求法來做,這很顯然。

所以我們可以加一維來完成這個問題。

定義f (i,j,k)表示走到(i,j)位置時,能否達到(i,j)使其%100=k

狀態轉移方程就是f(i,j,k)=f(i+1,j,(k-a(i,j)+100)%100) | f(i+1,j,(k-a(i,j)+100)%100)

最後找f(1,1,i) 的能達到的i最大值即可。

**如下。

#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define reg register int

#define f(i,a,n) for(reg i=a;i<=n;i++)

using namespace std;

int n;

const int n=30;

int a[n][n],dp[n][n][100];

int main()

for(int i=1;i<=n;i++)dp[n][i][a[n][i]]=1;

for(int i=n-1; i>=1; i--)

}for(int i=99;i>=0;i--)

}return 0;

}

數字三角形

題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 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 ...