動態規劃練習 UVa10003 區間dp

2021-08-29 01:20:44 字數 823 閱讀 9543

紫書上的動態規劃例題,很明顯是乙個區間線性規劃的問題,想起之前做過的矩陣鏈乘,這題和它很像,列舉方向都是向j-i遞增的

方向,這裡有個大神的區間dp模板的總結:可以強化理解。

所以,設dp[i][j]為切割小木棍i~j點的費用,則dp[i][j]=min,a[j]-a[i]表示第一刀切割為i~j的費用,而

dp[i][k]和dp[k][j]就像最優矩陣鏈乘一樣,將問題分割為了兩個子問題,所以長區間必須由短區間推得,和紫書上的思路一樣。

**:

#include #include #include #include using namespace std;

const int maxn=55;

int a[maxn];

int dp[maxn][maxn];

const int inf=0x3f3f3f3f;

int main()

a[0]=0;

a[n+1]=l;

for(int i=0;i<=n+1;i++)

dp[i][i+1]=0;

for(int x=1;x<=n+1;x++)//區間長度

if(minn!=inf)

dp[i][j]=minn;}}

printf("the minimum cutting is %d.\n",dp[0][n+1]);

}return 0;

}

uva 10003 切割木棍

題意 給了一根長度為l的木棍,另外給了一些要切的點的座標,可以把這個木棍理解為橫座標軸,每個能切割的地方的都有固定的座標。現在要求你把這個木棍按照切割位置切割,每次切割消耗的能量就是當前木棍的長度。現在要你選擇如何切割,使得消耗最小。解題思路 區間dp.狀態表示 dp i j 表示從i到j這個區間的...

切木棍 UVA 10003 區間DP

題目大意 有一根長為n的木棍,截一次木棍的代價為這個木棍的長度,現在知道要在這個木棍的 切割,問你最小的代價是多少 解題思路 寫的時候沒有看出來是個區間dp dp i j 代表的是在第i個切割點和第j個切割點之間切割的最小代價 那麼 dp i j min minn,dp i k dp j r a j...

uva10003 有點迷糊的思考

思路 這題跟矩陣鏈乘的思路一樣,所以還是很好考慮的,只是有一點需要加兩個切割點 如下 求最優的切割順序 最優子結構 dp i j 從i刀到j刀的最優切割順序 子問題 哪一刀最後切,dp i k dp k j i include includeusing namespace std define ma...