代码随想录训练营day46, 单词拆分和多重背包
创始人
2024-02-23 16:53:36
0

今天就这一道题, 但还是有难度的

单词就是物品, 字符串s就是背包, 单词能否组成字符串s, 就是问物品能不能把背包装满

  1. 确定dp数组含义: 字符串长度为i的话, dp[i]为true, 表示可以拆分, j是分割指针
  2. 确定递推公式: 如果确定dp[j]是true, 且[j , i]这个区间的子串出现在字典里, 那么dp[i]一定是true, 所以递推公式是if([j,i]这个区间的子串出现在字典里 && dp[j]是true), 那么dp[i] = true
  3. 初始化: dp[i]的状态依靠dp[j]是否为true, 所以dp[0]一定要为true
  4. 遍历顺序都可以, 但由于是要求子串, 最好先背包

(细节: 需要用一个hashset来判断单词是否在set中)

 

class Solution {public boolean wordBreak(String s, List wordDict) {//利用hashset来判断是否containHashSet set = new HashSet<>(wordDict);boolean[] dp = new boolean[s.length() + 1];//初始化dp[0] = true;//先遍历背包, 那么就是背包的大小for(int i = 1; i <= s.length(); i++){//j是分割点, 所以就不用等于i了///如图, j是i前一个, 所以从0开始,不用等于ifor(int j = 0; j < i; j++){//开始判断条件, dp[j]是否合法&&是否在set里if(dp[j] && set.contains(s.substring(j, i))){dp[i] = true;}}}//i是字符串的长度, 所以这里一样return dp[s.length()];}
}

多重背包

有n种物品和一个容量为v的背包, 第i中物品最多有MJ件可用, 没见耗费的空间是Ci, 价值是Wi

(其实和01背包很像, 把这里的m件摊开来就是01背包了)

就是在01背包的基础上多加个for循环遍历物品个数

public void testMultiPack2(){// 版本二:改变遍历个数int[] weight = new int[] {1, 3, 4};int[] value = new int[] {15, 20, 30};int[] nums = new int[] {2, 3, 2};int bagWeight = 10;int[] dp = new int[bagWeight + 1];for(int i = 0; i < weight.length; i++) { // 遍历物品for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量// 以上为01背包,然后加一个遍历个数for (int k = 1; k <= nums[i] && (j - k * weight[i]) >= 0; k++) { // 遍历个数dp[j] = Math.max(dp[j], dp[j - k * weight[i]] + k * value[i]);}System.out.println(Arrays.toString(dp));}}
}

相关内容

热门资讯

东方园林(002310)披露累... 截至2025年12月19日收盘,东方园林(002310)报收于2.38元,较前一交易日上涨1.28%...
广州越秀公安:抓获犯罪嫌疑人赵... 今天(12月19日)22时59分,@广州越秀公安 发布警情通报: 12月19日17时37分,广州11...
深耕“丰调语顺”,止纷于“茶香... 在丰顺县汤坑镇,一壶热气腾腾的“红军茶”,竟成为化解重大劳资纠纷的“金钥匙”。 今年9月,当地两家企...
越秀南路有两人受伤,广州警方通... 12月19日晚,广州市公安局越秀分局发布警情通报,19日17时37分,广州110接群众报警称,越秀南...
惠州市第二期网信沙龙活动举办,... 12月19日下午,以“惠聚美好 E 路同行”为主题的惠州市第二期网信沙龙活动在惠州联通(惠州市网络安...
涉及车险、涉外货运保险理赔等,... 北京商报讯(记者 李秀梅)12月19日,金融监管总局、最高人民法院联合发布金融领域纠纷多元化解典型案...
中方在世贸组织起诉印度信息通讯... 中新社北京12月19日电 (记者 尹倩芸)中国商务部新闻发言人19日答记者问时称,中方当日就印度信息...
锴威特(688693)披露修订... 截至2025年12月19日收盘,锴威特(688693)报收于37.28元,较前一交易日下跌0.21%...
“新18条”落地!支持前海深化... 2022年9月,海关总署出台《海关总署支持前海深港现代服务业合作区全面深化改革开放若干措施》(俗称“...
原创 比... 最近金融圈炸了个大新闻:俄罗斯央行把欧洲清算银行告上法庭,一开口就要18.2万亿卢布赔偿,折合美元差...