其实运用了背包问题的思想,假设对这个问题建立了函数:f(m,n) 从n个数中取:有两种情况 n不在这若干个数中,f(m,n-1) n在这若干个数中,f(m-n,n-1) 所以 f(m,n)=f(m,n-1)+f(m-n,n-1) 根据上式,应用递归的思想,编程如下: public class Tes ...
分类:
其他好文 时间:
2019-12-03 01:24:20
阅读次数:
133
P1679 神奇的四次方数 题解 一看这就是个完全背包 m最多不会超过18^4,所以我们把x^4用数组存起来,然后考虑如何填满m,注意存到18^4,不然会像我一样RE。。。 那么问题就转化成完全背包问题,因为一个四次方数可以用多次 设计状态: f [ i ] [ j ] 表示前 i 个数中,总和不超 ...
分类:
其他好文 时间:
2019-12-01 16:31:16
阅读次数:
83
"题目链接" 学到了一种方法,可以处理背包问题中带负数的转移 代码挺容易的 ...
分类:
编程语言 时间:
2019-11-28 01:07:16
阅读次数:
98
第1章 算法面试到底是什么鬼?一提起算法面试,很多同学就会心有余悸。可其实,大多数企业的算法面试,并没有那么可怕。并不是一定要啃完整本《算法导论》,才能玩儿转算法面试;也并不是只有ACM参赛选手,才能笑傲算法面试。恰恰相反,大多数算法面试关注的算法思维,其实很基础。在这一章,和大家聊一聊,算法面试, ...
分类:
编程语言 时间:
2019-11-27 00:30:02
阅读次数:
80
01背包问题求解思路 ①、确认子问题和状态 01背包问题需要求解的就是,为了体积V的背包中物体总价值最大化,件物品中第件应该放入背包中吗?(其中每个物品最多只能放一件) 为此,我们定义一个二维数组,其中每个元素代表一个状态,即前个物体中若干个放入体积为背包中最大价值。数组为:,其中表示前件中若干个物 ...
分类:
其他好文 时间:
2019-11-26 23:02:36
阅读次数:
103
1.背景:1.1 什么是背包问题:背包问题指这样一类问题,题意往往可以抽象成:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。(来自百度百科)1.2 背包问题的种类:就ACM或者其它算法竞赛而言,背包问题可以分为8种类型,其中最基础的是0/1背包 ...
分类:
其他好文 时间:
2019-11-25 09:55:50
阅读次数:
74
算法第四章上机实践报告 组员:王昕宇、吴佩毅 1.实践题目: 4-1 程序存储问题 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的 ...
分类:
编程语言 时间:
2019-11-19 01:23:01
阅读次数:
98
Java数据结构和算法(八)——递归 目录 1、递归的定义 2、求一个数的阶乘:n! 3、递归的二分查找 4、分治算法 5、汉诺塔问题 5、归并排序 6、消除递归 递归和栈 7、递归的有趣应用 ①、求一个数的乘方 ②、背包问题 ③、组合:选择一支队伍 8、总结 记得小时候经常讲的一个故事:从前有座山 ...
分类:
编程语言 时间:
2019-11-17 10:22:54
阅读次数:
125
#include <iostream> #include <algorithm> using namespace std; const int N = 110; int n, m; int v[N][N], w[N][N], s[N]; int f[N]; int main() { cin >> n ...
//二进制优化 最后变为01背包 #include <iostream> #include <algorithm> using namespace std; const int N = 12010, M = 2010; int n, m; int v[N], w[N]; int f[M]; int ...