题目:

思路:动态规划,递推式子 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]);

   dp[i][j]表示合并第i到第j个石子需要的最少代价。sum[i]表示前i个石子的价值,sum[j] - sum[i-1]即合成两堆石子((第i到第k合并出的石子),(第k+1到第j合并出的石子))。

但是考虑要求1-4,

需要先求出(1-1,2-4),(1-2,3-4),(1-3,4-4)。

所以我们不能直接按横纵坐标遍历。

需要换一种遍历方式,在纸上画一画就可以知道有哪些可行的遍历方式了。

我的遍历方式是

从左往右看,对角线全是0,表示合并(i,i)的代价是0。

这种遍历方式能够保证遍历是按照逻辑上的顺序的。

代码:

#include <iostream>
using namespace std;
typedef long long ll;
#define INF 2147483647//输入
int n;
int a[110];            int dp[110][110];//dp[i][j]表示第i到第j堆石子合成所需的最小代价
int sum[110];    //前缀和 int main(){cin >> n;for(int i = 1;i <= n; i++) cin >> a[i], sum[i] = sum[i-1] + a[i];int ans = 0;for(int i = 1;i <= n-1; i++){//(x,y)表示图上每一个箭头的起点 int x = i;int y = i+1;//开始往上走(箭头方向)        while(x >= 1){dp[x][y] = 2000000000;for(int j = x;j <= y-1; j++){dp[x][y] = min(dp[x][y],dp[x][j] + dp[j+1][y] + sum[y] - sum[x-1]);}x--;}}cout << dp[1][n] << endl;return 0;
} 

51nod 1021 石子归并 (动态规划 简单代码)相关推荐

  1. 51nod 1021 石头归并

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

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

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

  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. 机器学习简单代码示例

    机器学习简单代码示例 //在gcc-4.7.2下编译通过. //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include <iostream> u ...

  7. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

  8. 使用vb获取网页源文件并保存的简单代码

    使用vb获取网页源文件并保存的简单代码 Private Sub Command1_Click() Inet1.URL = "HTTP://www.wangjianran.com/" ...

  9. python代码大全表解释-Python中顺序表的实现简单代码分享

    顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...

最新文章

  1. 自研芯片架构 ,这家中国公司发布DPU芯片计划
  2. 【 MATLAB 】通过不同样本数的同一个有限长序列作 DTFT 对比
  3. vim插件之cscope的安装与配置
  4. 移动流媒体业务的技术与标准
  5. 12-- 缺失的第一个正数
  6. 国内首家!腾讯云密钥管理系统通过密码应用验证,积极探索行业标准边界
  7. CSDN使用富文本编辑器为所发布的文章生成右侧目录
  8. 药房管理系统 药店管理系统 GITHUB
  9. Java Set集合及Map集合详解
  10. c语言实验报告模板电子版,C语言实验报告模板.doc
  11. 数字推理题的解题技巧
  12. 专业级游戏测试书上架:精通游戏测试(第3版)
  13. java程序员必读书籍
  14. 知星社:学会了什么?
  15. 国家一级计算机等级考试 阴影效果的预设值为内部右上角,全国计算机等级考试一级练习题(1)解析...
  16. gwb-crypto-1
  17. 如何在Word文档中同时为中文和西文分别设置不同字体
  18. php操作rtf,是否可以使用PHP在网页内显示RTF文件? - php
  19. Xilinx FPGA的程序加密方法
  20. java中的DBCP连接池

热门文章

  1. 前端参数无法转为后端实体内部类_Java学到什么程度才能叫精通?
  2. auth 认证组件的补充
  3. [SCOI2014]方伯伯的OJ
  4. Mysql 索引-1
  5. 工作流中切换数据库时---“禁止流转”
  6. 【行为型模式】《大话设计模式》——读后感 (15)烤羊肉串引来的思考?——命令模式...
  7. B--Bookshelf 2
  8. JavaScript如何获取/计算页面元素的offset?
  9. 【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
  10. ASP.NET开发,从二层至三层,至面向对象 (4)