石子合併問題

2021-09-27 12:53:10 字數 1355 閱讀 5347

time limit: 1000 ms memory limit: 65536 kib

submit

statistic

problem description

在乙個圓形操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分和最大得分。

對於給定n堆石子,計算合併成一堆的最小得分和最大得分。

input

輸入資料的第1行是正整數n,1≤n≤100,表示有n堆石子。第二行有n個數,分別表示每堆石子的個數。

output

輸出資料有兩行,第1行中的數是最小得分,第2行中的數是最大得分。

sample input

4

4 4 5 9

sample output

43

54

hint

source

樣例:

問題解析 :

#includeusing namespace std;

const int maxn=610;

const int inf = 0x3f3f3f;

int n,m,a[maxn],sum[maxn];

int maxx[maxn][maxn],minn[maxn][maxn];

int main()

for(int i=n+1; i<=n*2; i++)

for(int i=n*2-1; i>=1; i--)//對2*n-1個數進行操作

//break;

}//printf("\n\n");

}int ans_min = inf;

int ans_max = 0;

for(int i=1; i<=n; i++)//在長度為n的進行找答案,區間(1-n,2-n+1,3-n+1,,,n-2*n)

石子合併問題

在乙個圓形操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分和最大得分。分析 假設有n堆石子需要合併,可以設計乙個2 n 1個元素的陣列來儲存每堆石子的個數。...

石子合併問題

在乙個圓形操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分和最大得分。沒有用dp 感覺一般的也能寫,時間複雜度也不高。include include inc...

石子合併問題

石子合併問題是最經典的dp問題。首先它有如下3種題型 1 有n堆石子,現要將石子有序的合併成一堆,規定如下 每次只能移動任意的2堆石子合併,合併花費為新合成的一堆石子的數量。求將這n堆石子合併成一堆的總花費最小 或最大 分析 當然這種情況是最簡單的情況,合併的是任意兩堆,直接貪心即可,每次選擇最小的...