poj1651解題報告

2021-07-03 10:20:45 字數 396 閱讀 2788

題目大意:給出一組n個數,每次從中抽出乙個數(第一和最後乙個不能抽),該次的得分即為抽出的數與相鄰兩個數的乘積。直到只剩下首尾兩個數為止。問最小得分是多少?

解題思路:用dp,轉化為矩陣鏈乘問題,但要注意最後一前一尾兩個數不能算進去,所以處理起來還是好一定的差別!!!

#include

#include

#include

#include

using namespace std;

const int inf=(1<<30);

const int maxn=100+50;

int f[maxn][maxn],p[maxn],n;

int main()

printf("%d\n",f[0][n-1]);

}

poj1651 矩陣鏈乘

以矩陣鏈abcd為例 按照矩陣鏈長度遞增計算最優值 矩陣鏈長度為1時,分別計算出矩陣鏈a b c d的最優值 矩陣鏈長度為2時,分別計算出矩陣鏈ab bc cd的最優值 矩陣鏈長度為3時,分別計算出矩陣鏈abc bcd的最優值 矩陣鏈長度為4時,計算出矩陣鏈abcd的最優值 動歸方程 k為矩陣鏈斷開...

Poj1651 矩陣鏈乘

題目沒有以明顯得矩陣鏈乘的形式給出來,但是按照它的規則去做就發現是可以轉換成矩陣連乘的,注意些遞推程式的時候,長區間的值要依賴短區間的值,所以還要有區間長度的迴圈,並且每次進入新的長區間進行劃分之前,都要用短區間來更新長區間的初值 poj1651.cpp 定義控制台應用程式的入口點。include ...

poj1651 區間DP 基礎

題意 給你一串數字,頭尾不能動,每次取出乙個數字,這個數字貢獻 該數字與左右相鄰數字的乘積,求乙個最小值。思路 用dp s t 去代表s到t的最小值,包括a s 和a t 然後從區間為3開始列舉,對每個小區間列舉乙個取出的數,狀態轉移方程就是 dp s t min dp s k dp k j a i...