
动态规划
lovesnowbest
打卡专用博客
展开
-
最长不下降子序列问题
DP最大不下降子序列前几天看了关于动态规划的内容,基本上讲的都是最大不下降序列,所以第一次博客 就写这个东西了。 最基本模板给出一系列的数,给出一个整数,即最长不下降子序列(code vs 1567) 题解:先另创一个数组,用来记录某一个数到目前为止的最大长度,用for语句将所有元素遍历 一遍就可以确定最长不下降子序列的长度了。 比如给出:21 22 63 15 从63开始(15不需要,原创 2017-02-18 11:39:56 · 3089 阅读 · 0 评论 -
背包问题1
背包问题简单背包问题有n个魔法石,重量分别为w1,w2,w3…wn,有一个可装重量为s的背包,从n件魔法石中取若干件,使得放入背包的重量之和刚好为s,求放的方法,若不存在该种情况则输出failed。 【输入样例】 10(s) 5(n) (重量)1 2 3 4 5 【输出样例】 1 4 5 题解递归,即一个一个将物品放入背包内试一下,设函数judge(s,n)表示剩下n个物品,需要装入大小原创 2017-02-18 16:59:45 · 594 阅读 · 0 评论 -
背包问题2
背包问题20/1背包问题题解:设f(i,x)表示前i件物品,背包容量为x时的最大价值,那么转移式可以表示为f(i,x)=max(f(i-1,x-w[i]+c[i]),f(i-1,x)),那么f(n,m)即为最优解。其实整体思想则表示为从容量为1的开始计算并且后面的计算不断的使用前面已经计算的值,这样就可以避免重复计算。code:#include<iostream>#include<stdio.h>原创 2017-02-20 14:49:47 · 258 阅读 · 0 评论 -
背包问题复习2
背包问题复习21.对于数据量变大的01背包问题题目: 想法:首先这题的size和bag都很大,如果直接用动态规划套原来的模板肯定不行,但是我们发现对于value的值比较小。那么我们不妨反过来想这个问题,我们记录对于选到第n个物品,价值达到j的重量最小的情况。这样最后达到的目标肯定是装的最多的。 code:#include<iostream>#include <memory.h>#defi原创 2017-08-07 17:01:15 · 409 阅读 · 0 评论 -
约瑟夫问题(动态规划解法)
Josephus problem solution with o(n)1.Description People are standing in a circle waiting to be executed. Counting begins at a specified point in the circle and proceeds around the circle in a speci原创 2017-08-02 13:09:00 · 938 阅读 · 0 评论 -
背包问题复习
背包问题复习vijos 1025想法:记忆化搜索,或者动态规划都行,基础题。 code: #include<iostream>#include<memory.h>using namespace std;int n,size;int value[105],bag[105];int record[105][1500];int search(int count,int rest){原创 2017-08-06 17:00:57 · 1214 阅读 · 0 评论