任重而道遠
在乙個操場上一排地擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。
計算出將n堆石子合併成一堆的最小得分。
第一行為乙個正整數n (2≤n≤100);
以下n行,每行乙個正整數,小於10000,分別表示第i堆石子的個數(1≤i≤n)。
乙個正整數,即最小得分。
7137816214
18
239
ac**:
#include#include#include#includeusing namespace std;
int n,a[105],f[105][105];
int main()
memset(f,127/2,sizeof(f));
for (int i=1;i<=n;i++) f[i][i]=0;
for (int p=2;p<=n;p++)
for (int i=1;i<=n-p+1;i++)
cout
}
合併石子(區間dp 模板題)
設有n堆沙子排成一排,其編號為1,2,3,n n 300 每堆沙子有一定的數量,可以用乙個整數來描述,現在要將這n堆沙子合併成為一堆,每次只能合併相鄰的兩堆,合併的代價為這兩堆沙子的數量之和,合併後與這兩堆沙子相鄰的沙子將和新堆相鄰,合併時由於選擇的順序不同,合併的總代價也不相同,如有4堆沙子分別為...
合併石子 區間dp水題
合併石子 描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。tags 最基本的區間dp,這題範圍小,如果n大一些,還是要加個平行四邊行優化。incl...
計蒜客 合併石子 區間dp
題目鏈結 題解 leetcode裡面有個戳氣球的題和這個類似,用區間dp來解。由於n堆 n 2 石子合併,最終一定會有個只剩2堆石子的中間狀態,這個狀態就是突破口。最終的2堆石子一定是在原來的石子裡面連續的,可以用dp i j 表示區間i.j的石子合併後最小的體力消耗,n堆石子消耗的最小體力為dp ...