![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Dragon--C
这个作者很懒,什么都没留下…
展开
-
HDU—1171 DP 01背包
题意是说学院分家, 所以需要分财产 ,给出N表示——N个财产,然后接下来N行 ,每行两个数 ,一个表示该财产的价值,另一个表示数量,最后需要求的是怎么分财产,才能让两个学院所分的财产最接近。其实就是个01背包,但是刚开始看的时候不知道怎么练习到01背包,毕竟是要求两个学院分到的财产价值差距最小,所以无从下手。但是后面想到可以对所有财产的总价值进行使用01背包,但是发现还是不对劲。原创 2015-05-20 09:44:39 · 360 阅读 · 0 评论 -
HDU—2955 DP—01背包
题意是:小偷去银行偷钱,给你最大被抓的概率P 和银行的个数N。接下来N行 每行两个数字,第一个数字表示该银行有M钱,第二个是被抓的概率。所以容易得到 dp[j]=max( dp[j] , dp[j-m[i]]*p[i] );dp[j]表示偷到 j 钱时不被抓的概率。#include #include #include #include #include us原创 2015-05-19 14:42:49 · 295 阅读 · 0 评论 -
HDU 1503 --DP
题意是给你两个单词 ch1、ch2 让你拼成一个单词ch ,ch1 和ch2 分别都是ch的子序列。并要求ch的长度最小 ,输出ch。根据LCS原理 ,先找出最长公共子序列,对其转移的路线进行记录,然后用递归输出。 #include #include #include #include using namespace std; char ch1[1原创 2015-06-04 11:56:16 · 286 阅读 · 0 评论 -
HDU—1203 DP—01背包
题目很水直接上代码#include #include using namespace std;#define max(a,b) a>b?a:bint main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF&&(n||m)) { int w[10100]; double g[10100]; double原创 2015-05-19 14:46:51 · 384 阅读 · 0 评论