DP 石子合併

2021-09-05 11:43:06 字數 1104 閱讀 5489

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

程式設計任務:

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

input

輸入包括多組測試資料,每組測試資料報括兩行。

第1 行是正整數n,1<=n<=100,表示有n堆石子。

第2行有n個數,分別表示每堆石子的個數。

output

對於每組輸入資料,輸出兩行。

第1 行中的數是最小得分;第2 行中的數是最大得分。

dpf[i][j]=從i開始數j個的最#得分

因為是環形,所以超出的部分要取%,同時字首和也要處理一下。

公式:

i到i+j-1,分個界k,取前部分+後部分的最小得分。

**:

#include

#include

using

namespace std;

int n,s[

102]

=,f[

204]

[102

],d[

204]

[102];

intss

(int i,

int j)

intmain()

for(

int j=

2;j<=n;

++j)

for(

int i=

1;i<=n;

++i)

}int ans=

10000000

;int ansa=0;

for(

int i=

1;i<=n;

++i)

printf

("%d\n%d"

,ans,ansa)

;}

DP 合併石子

矩陣連乘求最小相乘次數的問題和石子合併的問題思路是一樣的,而二者都是典型的dp 石子合併的問題 問題描述 在一條直線上有n堆石子,每堆有一定的數量,每次可以將兩堆相鄰的石子合併,合併後放在兩堆的中間位置,合併的費用為兩堆石子的總數。求把所有石子合併成一堆的最小花費。輸入格式 輸入第一行包含乙個整數n...

dp 合併石子

靈活的dp啊。靈活的思路啊。怎樣去分析乙個你認為是用簡單dp解決的問題呢。就是把問題盡量想得簡單一點。舉個例子,把大象放進冰箱分為幾步 把大象的頭放進冰箱,把大象的尾巴放進冰箱。都是同樣的 放進冰箱 的操作,涉及的資料的規模變小了,這樣 步驟簡化 就可以有點思路。回到說這道題 你合併這11堆石子,你...

合併石子 dp

時間限制 1 sec 記憶體限制 128 mb 提交 7 解決 7 提交 狀態 討論版 命題人 quanxing 在乙個操場上一排地擺放著 堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。計算出將 堆石子合併成一堆的最小得分。第...