代码实现 #include<bits/stdc++.h>usingnamespacestd;usingll =longlong;usingpii = pair<int,int>;constintN =30;inta[N], f[N], cnt[N];intmain(){ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);intT;cin >> T;while(T -- ){memset(a,0,sizeofa),memset(f,0,size...
代码一:在0-1背包基础上外加一层循环,枚举数量k,(k * c[i] < =j) 也就等于多重背包的思想 for(int i=1;i<=n;i++){for(intj=0;j<=v;j++){for(int k =0;k * c[i] <= j;k++){dp[i][j]= max(dp[i-1][j-c[i]*k] + w[i] * k , dp[i][j];} } } 代码二:二维数...
动态规划:斐波那契数列 斐波那契数列一般是使用递归来做,但是用递归来做当数量很大时,往往会超时。所以可以使用动态规划来做。...斐波那契数列 - 动态规划 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) +...
} 思路二:同样可以像0-1背包问题那样使用空间优化,一维数组按照从大到小的顺序枚举背包体积j。 思路三:可以使用二进制优化,优化选取的k的个数。