动态规划/贪心
文章平均质量分 58
dpand贪心
pinkelectronic
这个作者很懒,什么都没留下…
展开
-
位运算/状态压缩
用的是位异或,不同为1,压进去的为1自然就不同;(这里还有一个操作,a^=(1<<digit),异或上同样的digit这个位就被消0了(11为0))假设有n个状态,那么我们就需要用到n位,我们令一个数 a=0,a^=( 1<<digit) digit=0~n-1;记录一个int mask=a,mask代表掩码, 如果我们要遍历所有的1,2.只保留最低位的1,其他的全部置0 int digit=s&(-s);1. s的最低位的1去掉,s&(s-1) 这样就值改变了最低位的1为0。原创 2023-07-22 20:27:08 · 109 阅读 · 0 评论 -
动态规划dp
此时dp[j]有两个选择,一个是取自己dp[j] 相当于 二维dp数组中的dp[i-1][j],即不放物品i,一个是取dp[j - weight[i]] + value[i],即放物品i,指定是取最大的,毕竟是求最大价值。dp[j]可以通过dp[j - weight[i]]推导出来,dp[j - weight[i]]表示容量为j - weight[i]的背包所背的最大价值。参考 dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i]));原创 2023-04-22 15:35:43 · 57 阅读 · 0 评论