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到第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 石子归并 (动态规划 简单代码)相关推荐
- 51nod 1021 石头归并
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合 ...
- 51Nod 1021 石子合并 Label:Water DP
N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...
- Codevs 3002 石子归并 3(DP四边形不等式优化)
3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...
- 区间DP{环形}:石子归并-2
题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法, ...
- 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...
- 机器学习简单代码示例
机器学习简单代码示例 //在gcc-4.7.2下编译通过. //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include <iostream> u ...
- tensorflow笔记:流程,概念和简单代码注释
tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...
- 使用vb获取网页源文件并保存的简单代码
使用vb获取网页源文件并保存的简单代码 Private Sub Command1_Click() Inet1.URL = "HTTP://www.wangjianran.com/" ...
- python代码大全表解释-Python中顺序表的实现简单代码分享
顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...
最新文章
- 自研芯片架构 ,这家中国公司发布DPU芯片计划
- 【 MATLAB 】通过不同样本数的同一个有限长序列作 DTFT 对比
- vim插件之cscope的安装与配置
- 移动流媒体业务的技术与标准
- 12-- 缺失的第一个正数
- 国内首家!腾讯云密钥管理系统通过密码应用验证,积极探索行业标准边界
- CSDN使用富文本编辑器为所发布的文章生成右侧目录
- 药房管理系统 药店管理系统 GITHUB
- Java Set集合及Map集合详解
- c语言实验报告模板电子版,C语言实验报告模板.doc
- 数字推理题的解题技巧
- 专业级游戏测试书上架:精通游戏测试(第3版)
- java程序员必读书籍
- 知星社:学会了什么?
- 国家一级计算机等级考试 阴影效果的预设值为内部右上角,全国计算机等级考试一级练习题(1)解析...
- gwb-crypto-1
- 如何在Word文档中同时为中文和西文分别设置不同字体
- php操作rtf,是否可以使用PHP在网页内显示RTF文件? - php
- Xilinx FPGA的程序加密方法
- java中的DBCP连接池
热门文章
- 前端参数无法转为后端实体内部类_Java学到什么程度才能叫精通?
- auth 认证组件的补充
- [SCOI2014]方伯伯的OJ
- Mysql 索引-1
- 工作流中切换数据库时---“禁止流转”
- 【行为型模式】《大话设计模式》——读后感 (15)烤羊肉串引来的思考?——命令模式...
- B--Bookshelf 2
- JavaScript如何获取/计算页面元素的offset?
- 【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
- ASP.NET开发,从二层至三层,至面向对象 (4)