UVA Problem 10003 Cutting Sticks (切割木棍)
来源:互联网 发布:.co.jp 日本域名 编辑:程序博客网 时间:2024/09/21 09:24
题目链接 :https://cn.vjudge.net/problem/UVA-10003
【题解】 这是一道很经典的动态规划题,出现了很多次,今天终于把它弄明白了,
参考博客:http://http://blog.csdn.net/metaphysis/article/details/6872560
【AC代码】
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int N=55;#define INF 0x3f3f3f3fint length,num,a[N];int dp[1005][1005];int cust(int start,int end){ if(dp[start][end]<INF) return dp[start][end];//这说明已经有了最小花费 直接返回即可 for(int i=(start+1);i<=(end-1);i++)//注意不是从0到end { int ss = cust(start,i)+cust(i,end);//递归的去求最小花费 ss += (a[end]-a[start]) ; if(ss < dp[start][end]) dp[start][end]=ss ; } return dp[start][end];}int main(){ while(~scanf("%d",&length),length) { scanf("%d",&num); for(int i=1;i<=num;i++) scanf("%d",&a[i]); } a[num+1]= length;//末端长度为整个木棒长 int money=0; if(num) { for(int i=0;i<=55;i++) for(int j=0;j<55;j++) dp[i][j]=INF;//初始化花费无穷大 for(int i=0;i<=num;i++) dp[i][i+1]=0;//相邻的结点不用切割 cust(0,num+1);//加入两个端点 money = dp[0][num+1];//整个长度的min花费 } printf("The minimum cutting is %d.\n",money); } return 0;}
阅读全文
0 0
- UVa Problem 10003 Cutting Sticks (切割木棍)
- UVA Problem 10003 Cutting Sticks (切割木棍)
- 10003 Cutting Sticks切割木棍
- UVa 10003 Cutting Sticks(DP 最优木棍切割)
- UVA 10003 Cutting Sticks 切木棍 dp
- 【UVa 10003】【区间DP】Cutting Sticks【有一个长为L的木棍,木棍中间有n个切点。每次切割的费用为当前木棍的长度。求切割木棍的最小费用。】
- 例题9-9 UVA 10003 Cutting Sticks 切木棍(最优三角剖分 || 区间dp )
- uva 10003 切割木棍
- UVa 10003 Cutting Sticks
- UVA 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- uva 10003 Cutting Sticks
- uva:10003 - Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVA 10003 Cutting Sticks
- Uva - 10003 - Cutting Sticks
- test
- 多线程面试题
- zabbix-3.0.4安装部署
- Android观察者模式的理解
- oninput、onchange与onpropertychange事件的用法和区别
- UVA Problem 10003 Cutting Sticks (切割木棍)
- org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class xxx
- sql截取查询出的字符串|SUBSTRing|CHARINDEX|reverse|left|right函数
- vs code1.14 python配置anaconda(numpy包等)
- error while loading shared libraries: xxx.so.0:cannot open shared object file:的错误解决
- ubuntu下jdk安装
- html5跨域访问接口或者一般处理程序
- 【腾讯TMQ】老总让做后台接口监控,我却开发了一个App
- Fibonacci数列(string大整数)