题解 2131: 信息学奥赛一本通T1267-01背包问题

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

优质题解

01背包问题——递归的方法

#01背包问题在信息学奥赛一本通中,01背包问题采用的是循环的方法。但是循环有一个明显的问题,就是太麻烦,也不好理解。这里我们采用递归的方法来解决这个问题。首先我们定义一个函数work(),这个函数是我们的算法的核心。接下来是2个数组,分别是W和C。

递归遍历解空间+优化剪枝

解题思路:01背包问题也就是每样物品有放和不放两种选择的问题。题目要解决的问题是如何组合放入背包的物品来达到价值最大化。假设共有3件物品,分别选择放、放,不放。那么解可以抽象为(110);当然,只有3件物品的话,有2*2*2种不同的组合。即解空间里包含了8种组合。

信息学奥赛一本通T1267-01背包问题

摘要:解题思路:f[j] j背包重量得到的最大价值注意事项:当j 大于等于第i物品的重量时,更新f[j]参考代码:#include<iostream> #include<algorithm> using……

01背包问题 动态规划

```cpp#includeusingnamespacestd;constintL=5000+50;intn,m;intv[L],w[L];intdp[L][L];intmain(){scanf("%d%d",&m,&n);for(inti=1;i

01背包问题-动态规划

摘要:解题思路:注意事项:参考代码:(超简洁,生怕多写一行)#includeint main(){ using namespace std; int m,n; cin>>m>>n; int w,……

T1267-01背包问题

摘要:解题思路:滚动数组—— 一维dp数组遍历:for(      )  物品    for( 逆序) 背包递推公式: dp[ j ] = max( dp[ j ] , dp[ j -w[ i ] ] + ……