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

手机商场网站制作网页设计的五大原则

手机商场网站制作,网页设计的五大原则,西安seo外包费用,网站建设项目评审意见阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此题一看应该就是需要用到动态规划算法#xff0c;假设我们以 f[d]表示总和为 d 的元素组合的个数#xff0c;首先#xff0c;我们遍历 nums 数组#xff0c; 如果有 nums[i] target#xff0c;那么组… 阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此题一看应该就是需要用到动态规划算法假设我们以 f[d]表示总和为 d 的元素组合的个数首先我们遍历 nums 数组 如果有 nums[i] target那么组合中第一个元素我们放置 nums[i]组合中余下元素的排列总个数也就变成了子问题 f[target - nums[i]]。 如果有 nums[i] target那么组合中只能放置 nums[i]这一个元素。 3. 代码实现 于是我开始实现了第一版代码完全就照着上面的解题思路来写使用递归。 class Solution { public:int combinationSum4(vectorint nums, int target) {int ret 0;for (int i 0; i nums.size(); i) {if (nums[i] target) {ret combinationSum4(nums, target-nums[i]);}else if (nums[i] target) {ret 1;}}return ret;} };很可惜没有通过全部测试用例超时了。 超出时间限制 10 / 16 个通过的测试用例 这里计算 f[target - nums[i]]的时候有可能存在大量重复比如nums[1, 2, 3, 4], target5第一个元素我们放置 2 时需要计算 f(3)。然后如果前两个元素我们都放置 1 时也需要计算 f(3)。 所以一个很自然的思路就是把已经计算过的 f(d)记录下来下次遇到可以直接用。 class Solution { public:int combinationSum4(vectorint nums, int target) {static vectorint target_ret(1001, -1);int ret 0;for (int i 0; i nums.size(); i) {if (nums[i] target) {int left target - nums[i];if (target_ret[left] -1) {target_ret[left] combinationSum4(nums, left); }ret target_ret[left];}else if (nums[i] target) {ret 1;}}return ret;} };于是我定义了一个静态数组全部初始化为 -1计算一个 f(d) 后就把它记录下来下次直接使用不用再递归去调用一次函数。 但是这次直接变成解答错误了。我把错误的用例单独拿出来测试答案是对的。去网上一查原来 LeetCode 会用这同一个类去测试所有的测试用例那么我的静态数组就会受到前一个测试用例的影响所以答案也就是错的了此路看来也不通 那就只能手动递推了因为我们最终要计算 f(target) 而 f(target) 可能依赖于 f(target-1)、f(target-2)....f(1)所以我们就从 1 开始一个一个往后计算 f(d) 即可。 class Solution { public:int combinationSum4(vectorint nums, int target) {vectorint target_ret(target1, 0);for (int j 1; j target; j) {for (int i 0; i nums.size(); i) {if (nums[i] j) {int left j - nums[i];target_ret[j] target_ret[left];}else if (nums[i] j) {target_ret[j] 1;}}}return target_ret[target];} };很不幸还是出错了看起来是整型数超出表示范围了一个简单的思路是把 int 换成 unsigned int终于成功了 Line 16: Char 35: runtime error: signed integer overflow: 2147483647 1 cannot be represented in type ‘int’ (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:25:35 class Solution { public:int combinationSum4(vectorint nums, int target) {vectorunsigned int target_ret(target1, 0);for (int j 1; j target; j) {for (int i 0; i nums.size(); i) {if (nums[i] j) {int left j - nums[i];target_ret[j] target_ret[left];}else if (nums[i] j) {target_ret[j] 1;}}}return target_ret[target];} };要细究为什么会越界的话其实题目描述里特别说明了 题目数据保证答案符合 32 位整数范围。 但是这里只是说 f(target) 不会越界我们从 1 遍历到 target 的某个中间变量可能越界了然后这个中间变量实际上是用不到的。 比如nums[2, 6, 9], target15 f(14) 是不会用到的但是我们也会计算它。 时间复杂度为 O ( t a r g e t ∗ n u m s . s i z e ( ) ) O(target*nums.size()) O(target∗nums.size())空间复杂度为 O ( t a r g e t ) O(target) O(target)。 如果数组中存在负数的话会存在一个包含正数和负数的序列它们的和为 0也就是说可以无限添加这个序列而和保持不变这样f(target) 就是无穷的了。
http://www.hkea.cn/news/14321144/

相关文章:

  • 商务网站推广技巧包括什么滨湖区建设局网站
  • 河北网站建设排名wordpress无限加载
  • 网站免费虚拟主机申请摄影师做展示的网站
  • 实验室建设网站沐风seo
  • it之家网站源码哪个网站 的域名最便宜
  • 大同网站建设熊掌号内在空间官网
  • 如何管理公司网站后台wordpress 网页缩放
  • 网站开发与维护的工资wordpress导航栏的文件在哪
  • 百度网站下拉怎么做的怎么创建网站相册
  • 微端网站开发wordpress备案信息代码
  • 万网制作网站怎么样网站 asp.net php
  • 网站seo的主要优化内容免费的网站推荐下载
  • 什么网站可以做字体效果好影楼网站推广
  • 黑群晖做网站一站式做网站费用
  • 企业网站建设公司名称做百度百科的网站
  • 网站是什么?网站外链建设是什么
  • 上网站乱码武义县建设局网站首页
  • 农机局网站建设总结网站建设制作一个网站的费用
  • 包头网站建设平台广和wordpress集成dz
  • 网站开发外包wordpress theme 检测
  • 网站做调查问卷给钱的兼职网站建设与制作培训通知
  • 网站推广服务网址网页设计与制作 教学效果
  • 对于协会的新年祝贺语网站模板wordpress后台设置
  • 网站 首页 关键词网站后台怎么更新网站
  • 有关天猫网站开发的论文盐城网站开发市场
  • 建设银行梅李分行网站家庭电脑可以做网站吗
  • 精品建设课程网站qq刷赞网站推广快速
  • 网站建设需要了解的淘宝客做的最好的网站
  • 申请免费网站公司安徽建设厅证书查询网网站
  • 青岛网站建设 上流合作建设网站协议