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

有必要在线代理网页怀化网站优化公司有哪些

有必要在线代理网页,怀化网站优化公司有哪些,南宁网站制作企业,利用帝国软件如何做网站139.单词拆分 题目链接:单词拆分 题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意:**不要求字典中出现的单词全部都使用,并且字典中的单词…

139.单词拆分

题目链接:单词拆分

题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true

**注意:**不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

解题思路:

动规五部曲分析如下:

  1. 确定dp数组以及下标的含义
    dp[i]:表示字符串 s前i个字符组成的字符串 s[0…i−1]是否能被拆分成若干个字典中出现的单词

  2. 确定递推公式
    每次转移的时候我们需要枚举包含位置i-1的最后一个单词,看它是否出现在字典中以及除去这部分的字符串是否合法即可。使用变量j遍历分割长度为i的字符串,如果字符串[0……j-1]能被字典中的单词拆分并且字符串[j……i-1]在字典中则dp[i]为true。

    dp[i]=dp[j] && check(s[ji−1])

  3. dp数组如何初始化
    dp[0]=true 表示空串且合法。

  4. 确定遍历顺序
    先遍历字符串i,再遍历子串在字符串中的终止位置j。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> dict(wordDict.begin(), wordDict.end());vector<bool> dp(s.size() + 1, false);dp[0] = true;for (int j = 0; j <= s.size(); j++) {for (int i = 0; i < j; i++) {string str = s.substr(i, j - i);if (dict.find(str) != dict.end() && dp[i] == true)dp[j] = true;}}return dp[s.size()];}
};

多重背包问题

题目描述:有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间总和不超过背包容量,且价值总和最大。

解题思想:

多重背包和01背包是非常像的, 为什么和01背包像呢?

每件物品最多有Mi件可用,把Mi件摊开,其实就是一个01背包问题了。

例如:背包最大重量为10。

物品为:

重量价值数量
物品01152
物品13203
物品24302

问背包能背的物品最大价值是多少?

和如下情况有区别么?

重量价值数量
物品01151
物品01151
物品13201
物品13201
物品13201
物品24301
物品24301

毫无区别,这就转成了一个01背包问题了,且每个物品只用一次。

#include <iostream>
#include <vector>using namespace std;
int main(int argc, char *argv[]) {int bagWeight, n;cin >> bagWeight>>n;vector<int> weights(n),values(n),nums(n);int x;for (int i = 0; i < n; i++) cin>>weights[i];for (int i = 0; i < n; i++) cin>>values[i];	for (int i = 0; i < n; i++) cin>>nums[i];for (int i = 0; i < n; i++){int num = nums[i];num--;while(num--){weights.push_back(weights[i]);values.push_back(values[i]);}}vector<int> dp(bagWeight+1,0);for (int i = 0; i < weights.size(); i++){for (int j = bagWeight; j>=weights[i];j--){dp[j] = max(dp[j],dp[j-weights[i]]+values[i]);}}cout << dp[bagWeight];}

这里也有另一种实现方式,就是把每种商品遍历的个数放在01背包里面在遍历一遍。

#include <iostream>
#include <vector>using namespace std;
int main(int argc, char *argv[]) {int bagWeight, n;cin >> bagWeight>>n;vector<int> weights(n),values(n),nums(n);int x;for (int i = 0; i < n; i++) cin>>weights[i];for (int i = 0; i < n; i++) cin>>values[i];	for (int i = 0; i < n; i++) cin>>nums[i];vector<int> dp(bagWeight+1,0);for (int i = 0; i < weights.size(); i++){for (int j = bagWeight; j>=weights[i];j--){for (int k = 1; k <= nums[i] && (j - k * weights[i]) >= 0; k++)dp[j] = max(dp[j],dp[j-weights[i]*k]+values[i]*k);}}cout << dp[bagWeight];return 0;
}
http://www.yayakq.cn/news/343080/

相关文章:

  • 网站怎么上传数据库如果制作一个自己的网站
  • 网站设计收费标准大连金普新区规划建设局网站
  • 互动网络游戏公司网站建设中国建设银行网站开通短信服务
  • 徐州网站建设咨询评价一个网站的好坏
  • 优班图搭建网站工程信息
  • 北京微网站设计制作服务网站技术方案说明
  • 模版网站可以做seo吗wordpress悬浮
  • 商城网站建设需求分析it培训机构
  • 企业网站建设功能模块wordpress 利用页面搞
  • 功能型网站设计WordPress三栏资讯主题
  • 手机端网站开发多少钱揭阳中小企业网站制作
  • 南京市工程建设交易中心网站东坑东莞微信网站建设
  • 做什么网站开发最简单logo设计在线生成免费无水印
  • 建网站的服务器网站开发宝典
  • asp网站免费个人网页设计dw
  • 小程序怎么做微网站链接威联通wordpress怎么用
  • 视频购物网站开发方案做设计用哪个素材网站
  • 东莞网站建设信科网站漂浮怎么做
  • 网站建设有云端吗做百度收录的网站
  • 北京精兴装饰公司厦门seo俱乐部
  • html电影网站模板下载app开发哪家公司好
  • 河南网站建设定制wordpress error log
  • 网站建设改革情况汇报网站网页设计0基础学
  • 佛山智家人网站重庆景点排名
  • 吉林集安市建设局网站建网站用什么工作站
  • 网站内链分析学校门户网站作用
  • 速贝网站友情链接怎么做外贸招聘网最新招聘
  • 做期货资讯网站临沂市建设局网站
  • 医疗网站建设平台价格上海建设监理协会网站
  • 网站做3年广州网站备案拍照