当前位置: 首页 > news >正文

最超值的赣州网站建设淘宝代做网站

最超值的赣州网站建设,淘宝代做网站,哈尔滨建筑专业网站,广西网络推广算法训练营 day50 动态规划 单词拆分 多重背包理论基础 单词拆分 139. 单词拆分 - 力扣#xff08;LeetCode#xff09; 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意#xff1a;不要求字典中出现的单词…算法训练营 day50 动态规划 单词拆分 多重背包理论基础 单词拆分 139. 单词拆分 - 力扣LeetCode 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意不要求字典中出现的单词全部都使用并且字典中的单词可以重复使用。 单词就是物品字符串s就是背包单词能否组成字符串s就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词说明就是一个完全背包 确定dp数组以及下标的含义 dp[i] : 字符串长度为i的话dp[i]为true表示可以拆分为一个或多个在字典中出现的单词。 确定递推公式 如果确定dp[j] 是true且 [j, i] 这个区间的子串出现在字典里那么dp[i]一定是true。j i 。 所以递推公式是 if([j, i] 这个区间的子串出现在字典里 dp[j]是true) 那么 dp[i] true。 dp数组如何初始化 从递推公式中可以看出dp[i] 的状态依靠 dp[j]是否为true那么dp[0]就是递推的根基dp[0]一定要为true否则递推下去后面都都是false了。 确定遍历顺序 题目中说是拆分为一个或多个在字典中出现的单词所以这是完全背包。 还要讨论两层for循环的前后顺序。 如果求组合数就是外层for循环遍历物品内层for遍历背包。 如果求排列数就是外层for遍历背包内层for循环遍历物品。 而本题其实我们求的是排列数为什么呢。 拿 s “applepenapple”, wordDict [“apple”, “pen”] 举例。“apple”, “pen” 是物品那么我们要求 物品的组合一定是 “apple” “pen” “apple” 才能组成 “applepenapple”。 “apple” “apple” “pen” 或者 “pen” “apple” “apple” 是不可以的那么我们就是强调物品之间顺序。所以说本题一定是 先遍历 背包再遍历物品。 举例推导dp[i] 以输入: s “leetcode”, wordDict [“leet”, “code”]为例dp状态如图 dp[s.size()]就是最终结果。 class Solution {public boolean wordBreak(String s, ListString wordDict) {boolean[] dp new boolean[s.length()1];Arrays.fill(dp,false);dp[0] true;HashSetString set new HashSet(wordDict);for (int i 1; i s.length(); i) {for (int j 0; j i; j) {if (set.contains(s.substring(j,i)) dp[j]){dp[i] true;}}}return dp[s.length()];} }多重背包理论基础 有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用每件耗费的空间是Ci 价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量且价值总和最大。 多重背包和01背包是非常像的 为什么和01背包像呢 每件物品最多有Mi件可用把Mi件摊开其实就是一个01背包问题了。 例如 背包最大重量为10。 物品为 重量价值数量物品01152物品13203物品24302 问背包能背的物品最大价值是多少 和如下情况有区别么 重量价值数量物品01151物品01151物品13201物品13201物品13201物品24301物品24301 毫无区别这就转成了一个01背包问题了且每个物品只用一次。 改变物品数量为01背包格式 public void testMultiPack1(){// 版本一改变物品数量为01背包格式ListInteger weight new ArrayList(Arrays.asList(1, 3, 4));ListInteger value new ArrayList(Arrays.asList(15, 20, 30));ListInteger nums new ArrayList(Arrays.asList(2, 3, 2));int bagWeight 10;for (int i 0; i nums.size(); i) {while (nums.get(i) 1) { // 把物品展开为iweight.add(weight.get(i));value.add(value.get(i));nums.set(i, nums.get(i) - 1);}}int[] dp new int[bagWeight 1];for(int i 0; i weight.size(); i) { // 遍历物品for(int j bagWeight; j weight.get(i); j--) { // 遍历背包容量dp[j] Math.max(dp[j], dp[j - weight.get(i)] value.get(i));}System.out.println(Arrays.toString(dp));} }版本二改变遍历个数 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));}} }
http://www.hkea.cn/news/14567486/

相关文章:

  • 茌平网站制作大型网站开发项目合同
  • 没有官方网站怎么做seo优化河北网站制作公司哪家好
  • 学校网站怎么查询录取免费ftp服务器申请网站
  • 可视化响应式网站建设深圳龙岗做网站公司
  • 江苏中淮建设集团有限公司网站中移建设 网站
  • 网站开发与维护费用wordpress图册主题
  • 手机电脑网站建设短视频手机如何搭建网站
  • 网站建设江苏北京广告设计招聘
  • 怎么做传奇网站图wordpress友情链接定时
  • 做脚垫版型的网站公司网站域名注册费用
  • 怎么利用网站做外链接asp网站开发软件
  • 网站流量查询服务平台网站别人帮做的要注意什么东西
  • 张雪峰说软件工程seo在线排名优化
  • 网站建设与管理自考题如何在百度上为企业做网站
  • 双语网站建设方案网站后台管理系统演示
  • 做产品类网站有哪些制作wordpress静态首页
  • 个人网站的首页大地影院资源免费观看视频
  • 网站用户需求报告惠州建设网站公司
  • 织梦网站栏目访问目录微信公众号手机网站开发
  • 营销型网站带来自己做电影网站可以赚钱吗
  • 有没有可以做游戏的网站seo关键词怎么选
  • 网站建设公司程序中文域名有价值吗
  • 针织衫技术支持东莞网站建设个人接做网站多少钱
  • 综合门户网站建设地方社区网站 备案
  • 北京市建设工程安全质量监督总站网站wordpress 调整布局
  • 网站设计建设公司需要什么资质青岛网页制作案例
  • 树形菜单网站wordpress视频网站主题
  • 镇江网站建设机构怎样找公司做单的网站
  • 淘宝网站的推广与优化怎么给自己的网站做优化
  • 怎么做英文版网站网上电商平台