51nod 1021 石頭歸併

2022-08-09 07:00:13 字數 1015 閱讀 1543

1021 石子歸併

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 難度:3級演算法題

收藏關注n堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將n堆石子合併成一堆的最小代價。

例如: 1 2 3 4,有不少合併方法

1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19)

1 2 3 4 => 1 5 4(5) => 1 9(14) => 10(24)

1 2 3 4 => 1 2 7(7) => 3 7(10) => 10(20)

括號裡面為總代價可以看出,第一種方法的代價最低,現在給出n堆石子的數量,計算最小合併代價。

input

第1行:n(2 <= n <= 100)

第2 - n + 1:n堆石子的數量(1 <= a[i] <= 10000)

output

輸出最小合併代價
input示例

412

34

output示例

19

這道題初一看很容易往貪心方向想,後來看了提示才知道是dp,可是並不知道怎麼dp。。

1 #include2 #include

3 #include4 #include5

using

namespace

std;

6const

int inf = 1

<< 30;7

int sum[1005];8

int vis[1005];9

int dp[1005][1005

];10

intmain()

21for(len=1;len)28}

29 printf("

%d\n

",dp[1

][n]);30}

31 }

51nod 1021 石子歸併

n堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將n堆石子合併成一堆的最小代價。例如 1 2 3 4,有不少合併方法 1 2 3 4 3 3 4 3 6 4 9 10 19 1 2 3 4 1 5 4 5 1 9...

51nod 1021 石子歸併

1021 石子歸併 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 n堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將n堆石子合併成一堆的最小代價。例如 1 2 3 4,有不少...

51nod 1021 石子歸併

1021 石子歸併 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 n堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將n堆石子合併成一堆的最小代價。例如 1 2 3 4,有不少...