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示例
4
1
2
3
4
Output示例
19这道题初一看很容易往贪心方向想,后来看了提示才知道是dp,可是并不知道怎么dp。。
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<iostream>
 5 using namespace std;
 6 const int INF = 1 << 30;
 7 int sum[1005];
 8 int vis[1005];
 9 int dp[1005][1005];
10 int main(){
11     int n;
12     while(~scanf("%d",&n)){
13         int i,len,temp;
14         memset(vis,0,sizeof(vis));
15         memset(sum,0,sizeof(sum));
16         memset(dp,0,sizeof(dp));
17         for(i=1;i<=n;i++){
18             scanf("%d",&vis[i]);
19             sum[i]=sum[i-1]+vis[i];
20         }
21         for(len=1;len<n;len++){
22             for(i=1;i+len<=n;i++){
23                 dp[i][i + len] = INF;
24                 temp=sum[i+len]-sum[i-1];
25                 for(int k=i;k<i+len;k++)
26                     dp[i][i+len]=min(dp[i][i+len],dp[i][k]+dp[k+1][i+len]+temp);
27             }
28         }
29         printf("%d\n",dp[1][n]);
30     }
31 }

转载于:https://www.cnblogs.com/OMG-By/p/5498689.html

51nod 1021 石头归并相关推荐

  1. 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 ...

  2. 石子归并 51Nod - 1021

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

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

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

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

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

  5. 服务器桌面没了怎么办,windows2003服务器不显示桌面怎么办

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版 系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的 ...

  6. 51nod 2591 最终讨伐

    题目描述: 小K迷上了一款游戏,他组织了一个大型攻坚队,对敌人进行了最终的讨伐. 讨伐过程中,敌人使用技能使得攻坚队中的若干成员进入了诅咒状态,小K立即拿出了相应数量的祝福石来应对,但由于情况紧急,小 ...

  7. 【51nod】2591 最终讨伐

    [51nod]2591 最终讨伐 敲51nod是啥评测机啊,好几次都编译超时然后同一份代码莫名奇妙在众多0ms中忽然超时 这道题很简单就是\(M\)名既被诅咒也有石头的人,要么就把石头给没有石头被诅咒 ...

  8. LeetCode简单题之最后一块石头的重量

    题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x = ...

  9. LeetCode简单题之石头与宝石

    题目 给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头. stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. ...

最新文章

  1. 阿里分布式事务框架GTS开源了!
  2. Leangoo产品白皮书
  3. 移植fatfs上电复位前两次不能正确打开文件解决方法
  4. “影响100活动”答记者问(二)
  5. 详解集合之HashMap——HashMap内部结构,自动扩容机制,为什么需要重写hashcode和equals方法
  6. 如何快速在oracle内生成数据,[Oracle]快速生成大量模拟数据的方法
  7. mongoose --- 建立一个集合规则,并导出.
  8. 【深度学习】Win10安装TensorFlow_gpu(避坑必看)
  9. 基于Tiles框架Struts框架的UI 设计—几种组织HTML和JSP视图组件
  10. libuv udp server和client
  11. 有关TinyXML使用的简单总结
  12. 微软为何能一直向安卓厂商收费?
  13. python安装计算机丢失api_Python安装后提示api-ms-win-crt-runtime-|1-1-0.dll丢失
  14. phpcms v9模板制作教程
  15. 2021江西省数学建模三题
  16. 【机器学习手册】【1】熟练使用向量矩阵和数组 —— 二维矩阵叉乘公式
  17. 【IObit】五大软件激活码( Advanced Systemcare....)
  18. 电脑文件删除不掉什么原因?程序显示被占用清理不掉如何操作?
  19. ENIAC到EDVAC到Intel的思考
  20. C#学习笔记:子类于父类的构造函数的关系【By Myself】

热门文章

  1. 超链接浏览meta name=format-detection/ 的用法
  2. 20180521 数组转换
  3. centos安装JDK与Tomcat
  4. flash,sdram 和 cpu 是 T形连接(类似于争的板子上flash和sdram的拓扑结构) --- FLASH搭上SDRAM,并不是你想象的那样不用布等长!...
  5. 谈谈基于OAuth 2.0的第三方认证 [上篇]
  6. 浅析JQuery中的html(),text(),val()区别
  7. SharePoint 2013 配置基于AD的Form认证
  8. jQuery基础---filter()和find()
  9. Spring@Autowired注解与自动装配
  10. 找不到或无法加载主类 org.jivesoftware.openfire.starter.ServerStarter