POJ 1163 數字三角形

2022-08-12 15:12:13 字數 1283 閱讀 1044

portal:

dp經典題,ioi94考題,在各大oj上都有

1 #include2 #include3 #include

4 #include5 #include6 #include7

using

namespace

std;

8#define for(i,j,k) for(int i=j;i<=k;i++)

9#define ford(i,j,k) for(int i=j;i>=k;i--)

10#define ll long long

11#define maxn 1010

12int

cost[maxn][maxn],dp[maxn][maxn];

13int

t,n;

14int

main()

15

水水的寫法

這道題還有加強的版本,增加了資料規模和資料組數,然並卵 如uestc 1011

1 #include2 #include3 #include

4 #include5 #include6 #include7

using

namespace

std;

8#define for(i,j,k) for(int i=j;i<=k;i++)

9#define ford(i,j,k) for(int i=j;i>=k;i--)

10#define ll long long

11#define maxn 110

12int

cost[maxn][maxn],dp[maxn][maxn];

13int

t,n;

14int

main()

1530}31

return0;

32 }

依然水水的寫法

據我理解:dp是建立在各子問題的獨立與子問題的最優子結構上的

值得注意的是,這道題的dp有兩種寫法

dp[i][j]既可以表示以(i,j)為起點的路徑長度最大值

也可以表示以(i,j)為終點的路徑長度最大值

當然都是最大值啦daze

如果這題要輸出任意一種最長路徑的話,用進行dp較優

這是因為路徑的直接無回溯輸出是由頂向底,所以它要求每個經過點都有確定的後驅,所以用

當然用的話寫個簡單的回溯取解就好了,有點煩啊。。。

話說這道題的dp決策樹似乎是個dag,說來dag滿足各種dp條件啊,那豈不是只要碰到dag就可以拿dp亂搞了? ふっふっと

POJ 1163數字三角形

所犯錯誤 1 在迴圈中用scanf輸入陣列元素時時,忘記敲 位址符,導致程式停止,改正 2 在測試時想輸出這個二維陣列的所有元素,雖然用了雙重迴圈,但輸出時只寫了a i 導致輸出了位址 3 這道題不能用萬能標頭檔案,識別不了,可以用 include 心得 1 73 8 8 1 0 2 7 4 4 4...

poj1163 數字三角形 動態規劃

1.記憶遞迴型 自頂向下 d i j 來存數字 典型的遞迴問題 d r,j 出發,下一步只能走d r 1,j 或者d r 1,j 1 故對於n行的三角形 if r n maxsum r,j d r,j else maxsum r,j max maxsum r 1,j maxsum r 1,j 1 d...

POJ1163 數字三角形 經典DP題目

題目大意 如圖所示的數字三角形,從頂部出發,在每一結點可以選擇向左走或得向右走,一直走到底層,要求找出一條路徑,使路徑上的值的和最大。圖是我盜的 如果用陣列num j i 表示j行i列的數字,dp j i 表示從該位置向下走的子問題的最優解,整個問題最終就是要求解dp 1 1 就是最頂端的位置的最優...