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 <= Aii <= 10000)Output输出最小合并代价Sample Input

4
1
2
3
4

Sample Output

19

http://www.cnblogs.com/qq-star/p/4161143.html(大佬的详细解答)

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6
 7 const int INF=100000000;
 8
 9 int N;
10 int dp[105][105],sum[105][105],a[105];
11
12 int main()
13 {   scanf("%d",&N);
14     for(int i=1;i<=N;i++) scanf("%d",&a[i]);
15     for(int i=1;i<=N;i++){
16         dp[i][i]=0;
17         sum[i][i]=a[i];
18     }
19     for(int len=1;len<N;len++){
20         for(int i=1;i<=N&&i+len<=N;i++){
21             int j=len+i;
22             dp[i][j]=INF;
23             for(int k=i;k<j;k++){
24                 sum[i][j]=sum[i][k]+sum[k+1][j];
25                 int tem=dp[i][k]+dp[k+1][j]+sum[i][j];
26                 if(dp[i][j]>tem) dp[i][j]=tem;
27             }
28         }
29     }
30     printf("%d\n",dp[1][N]);
31 }

转载于:https://www.cnblogs.com/zgglj-com/p/6914831.html

石子归并 51Nod - 1021相关推荐

  1. 石子归并 51Nod - 1021(区间DP入门题)

    N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...

  2. 51nod 1021 石头归并

    1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合 ...

  3. Codevs 3002 石子归并 3(DP四边形不等式优化)

    3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...

  4. 区间DP{环形}:石子归并-2

    题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法, ...

  5. 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目

    1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...

  6. codevs 1048 石子归并

    传送门 1048 石子归并  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], ...

  7. GarsiaWachs算法:石子归并问题

    1023 石子归并 V3 基准时间限制:2 秒 空间限制:131072 KB 分值: 320 难度:7级算法题  收藏  关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 ...

  8. 51nod 1021 石子归并 (动态规划 简单代码)

    题目: 思路:动态规划,递推式子 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); dp[i][j]表示合并第i ...

  9. 51Nod 1021 石子合并 Label:Water DP

    N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...

最新文章

  1. leetCode 28. Implement strStr() 字符串
  2. 详解协同感知数据集OPV2V: An Open Benchmark Dataset and Fusion Pipeline for Perception with V2V Communication
  3. 徐扬:互联网营销下的移动营销
  4. QTcpSocket使用QDataStream发送和保存图片文件
  5. 自然语言处理——BERT情感分类实战(一)之预处理
  6. python下载-python下载及安装
  7. 2.windows-and-mac在控制台创建ASP.NET-Core应用程序
  8. matlab正交表,正交表的构造方法及Matlab实现
  9. CText类使用例程
  10. 高考为什么考计算机信息,信息技术是否应该进入高考?
  11. 有的放矢-电气工程师的工作重心
  12. backurl使用,登录后跳转回当前页
  13. 【转】ARM GIC中断系列(三):gicv3架构基础
  14. 用Python群发邮件
  15. 【Java】如何优雅的使用HttpClient
  16. 远程桌面 域计算机,在AD中实现仅普通域用户可通过远程桌面控制自身计算机
  17. 前端必学——用JavaScript实现电商图片放大镜效果(附代码)
  18. Typora自定义主题#简约风主题
  19. 我用ChatGPT做直播技术选型,卷死了同事
  20. 输出100以内所有能被7整除的数

热门文章

  1. ctr z撤回反向_matplotlib 3D图上的反向Z轴
  2. ruijie交换机lacp动态_Server2016和华为s5720交换机链路聚合增加带宽
  3. java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big解决方法
  4. tomcat和servlet的关系
  5. 虚拟化运维工具医院解决方案
  6. 电脑技巧:微软电脑管家测试版发布,赶快来体验一下吧!
  7. 电脑技巧:键盘上最长的按键空格键使用技巧!
  8. php获取服务器名称,PHP 获取服务器详细信息
  9. 垂直梯形校正画质损失多少_梯形校正功能是怎么实现的?其中可大有学问
  10. python中一些特殊方法的作用