博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj 737 石子合并 经典区间 dp
阅读量:4636 次
发布时间:2019-06-09

本文共 877 字,大约阅读时间需要 2 分钟。

石子合并(一)

时间限制:
1000 ms  |  内存限制:
65535 KB
难度:
3
描述
    有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。
输入
有多组测试数据,输入到文件结束。
每组测试数据第一行有一个整数n,表示有n堆石子。
接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开
输出
输出总代价的最小值,占单独的一行
样例输入
31 2 3713 7 8 16 21 4 18
样例输出
9239
#include
#include
//STL数值算法头文件#include
#include
#include
#include
#include
//模板类头文件using namespace std;#define N 210int dp[N][N],sum[N];int main(){ int n; while(~scanf("%d",&n)) { int a[N]; sum[0]=0; for(int i=1; i<=n; i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; } memset(dp,0,sizeof(dp));//自身到自身不用加代价 int len,l,r,k; for(len=2; len<=n; len++) { for(l=1,r=l+len-1; r<=n; l++,r++)//右端点不能越界 { dp[l][r] = 0x3f3f3f3f; for(k=l; k

转载于:https://www.cnblogs.com/nyist-xsk/p/7264885.html

你可能感兴趣的文章
day8-异常处理与网络编程
查看>>
杭州某知名xxxx公司急招大量java以及大数据开发工程师
查看>>
[转]char * 和字符数组
查看>>
io流中的txt文件编码更改
查看>>
百练-16年9月推免-B题-字符串判等
查看>>
SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#)
查看>>
UML概述
查看>>
ubuntu 软件包降级
查看>>
PHP 函数截图 哈哈哈
查看>>
1044. Shopping in Mars
查看>>
秒懂数据类型的真谛—Python基础前传(4)
查看>>
Linux bashrc和profile的用途和区别
查看>>
信息采集-火车采集器
查看>>
自定义View控件(2—手写实例代码)
查看>>
理解列存储索引
查看>>
android viewpage预加载和懒加载问题
查看>>
android 去掉标题栏、状态栏、横屏
查看>>
android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd
查看>>
VMware安装Centos7后有线线缆被拔出
查看>>
关于在smarty中实现省市区三级联动
查看>>