建网站卖虚拟资源需要怎么做,如何建立一家公司,全美网站建设,保健品网站建设案例思路#xff1a;01背包
这个背包问题很经典了#xff0c;但是这里涉及到一个问题#xff0c;就是我们转化问题的时候发现#xff0c;这个背包需要正好装满才行。这里我们把长度作为价值#xff0c;也就是说每一个数的价值都是1。
我们需要把dp初始化为全部为负数#x…思路01背包
这个背包问题很经典了但是这里涉及到一个问题就是我们转化问题的时候发现这个背包需要正好装满才行。这里我们把长度作为价值也就是说每一个数的价值都是1。
我们需要把dp初始化为全部为负数除了下标为0的dp[0]0因为如果是正好装满那么dp[0]这里必定是会被转移到的所以需要赋值为0代表在体积为0的情况下的最大价值。
如果说没有符合条件的我们需要返回-1其实我们初始化为了一个很小的数所以需要max(-1,dp[target])
上代码
class Solution {
public:int lengthOfLongestSubsequence(vectorint nums, int target) {int nnums.size();vectorintdp(target1,-2e9);dp[0]0;for(int i0;in;i){for(int jtarget;jnums[i];j--){dp[j]max(dp[j-nums[i]]1,dp[j]);}}return max(-1,dp[target]);}
};