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

永久免费搭建网站做网站侵权

永久免费搭建网站,做网站侵权,中国企业100强,山东专业网站建设哪家便宜问题 注#xff1a;大佬对此类问题的解法#xff1a;动态规划背包问题总结 给你一个由 不同 整数组成的数组 nums #xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1#xff…问题 注大佬对此类问题的解法动态规划背包问题总结 给你一个由 不同 整数组成的数组 nums 和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1 输入nums [1,2,3], target 4 输出7 解释 所有可能的组合为 (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) 请注意顺序不同的序列被视作不同的组合。 示例 2 输入nums [9], target 3 输出0 提示 1 nums.length 200 1 nums[i] 1000 nums 中的所有元素 互不相同 1 target 1000 程序 #include stdio.h// 定义一个函数来计算总和为目标整数的元素组合的个数 int combinationSum4(int* nums, int numsSize, int target) {// 创建一个动态规划数组 dp长度为 target 1int dp[target 1];// 初始化 dp 数组将所有元素初始化为0for (int i 0; i target; i) {dp[i] 0;}// 初始状态总和为0时只有一种组合方式即什么都不选dp[0] 1;// 开始填充 dp 数组for (int i 1; i target; i) {for (int j 0; j numsSize; j) {// 如果当前的目标总和减去数组元素可达if (i - nums[j] 0) {// 则将 dp[i] 增加 dp[i - nums[j]]表示加上当前元素后的组合数dp[i] dp[i - nums[j]];}}}// 返回 dp 数组中最终目标总和的组合数return dp[target]; }int main() {int nums[] {1, 2, 3};int target 4;int numsSize sizeof(nums) / sizeof(nums[0]);// 调用 combinationSum4 函数计算组合数int result combinationSum4(nums, numsSize, target);// 打印结果printf(输出%d\n, result);return 0; } 解释 在动态规划中dp[i - nums[j]] 表示以目标值 i 减去数组中的某个元素 nums[j] 后的状态。这通常用于动态规划问题中特别是在处理组合问题时来记录前一步的状态。 在上述程序中dp[i] 表示总和为 i 的组合数。当计算 dp[i] 时我们遍历数组 nums 中的元素对于每个元素 nums[j]我们考虑将其加入总和为 i 的组合中。为了计算 dp[i]我们需要考虑两种情况 如果 i 大于等于 nums[j]那么我们可以将 nums[j] 加入到总和为 i 的组合中。此时我们需要考虑的是将 nums[j] 加入后剩余的总和为 i - nums[j] 的组合数这就是 dp[i - nums[j]]。如果 i 小于 nums[j]则 nums[j] 不能被加入到总和为 i 的组合中因为它会导致总和超过 i。因此在这种情况下dp[i - nums[j]] 为0。 所以dp[i - nums[j]] 表示以目标值 i 减去数组中的某个元素 nums[j] 后的状态即剩余的部分。通过考虑所有可能的 nums[j]我们可以累加所有这些情况以计算总和为 i 的组合数 dp[i]。这就是动态规划的思想将较大问题分解成较小问题并使用较小问题的解来构建较大问题的解。 假设数组 nums 为 [1, 2, 3]目标值 target 为 4。 初始时dp 数组如下 dp[0] 1 dp[1] 0 dp[2] 0 dp[3] 0 dp[4] 0 开始计算 dp[1] i 等于 1nums[j] 等于 1因此 i nums[j]。我们考虑将 1 加入到总和为 1 的组合中剩余的总和是 1 - 1 0。此时dp[0] 为1因为只有一种组合方式即什么都不选。所以dp[1] dp[1 - 1] dp[0] 1。 继续计算 dp[2] 和 dp[3]dp[2] 的计算和 dp[1] 类似因为我们可以将 2 加入到总和为 2 的组合中dp[2] dp[2 - 2] dp[0] 1。dp[3] 的计算也类似因为我们可以将 3 加入到总和为 3 的组合中dp[3] dp[3 - 3] dp[0] 1。 最后计算 dp[4]对于 dp[4]我们可以考虑将 1 加入到总和为 4 的组合中这就是 dp[4 - 1] dp[3] 1。我们还可以考虑将 2 加入到总和为 4 的组合中这就是 dp[4 - 2] dp[2] 1。同样我们可以考虑将 3 加入到总和为 4 的组合中这就是 dp[4 - 3] dp[1] 1。然后将这些情况的组合数累加起来即 dp[4] 1 1 1 3。 最终dp[4] 的值为 3表示总和为 4 的组合数为 3 种即 [1, 1, 1, 1]、[1, 1, 2] 和 [2, 2]。
http://www.yutouwan.com/news/6968/

相关文章:

  • 哪个公司做企业网站好html个人网站源码
  • 网站的备案信息wordpress响应慢原因
  • 吉林做网站wordpress企业内网主题
  • 太原 招聘 网站建设 技术经理设计开发流程
  • 网站建设及管理制度文章网站建设策
  • 如何用网站做课件vue vs wordpress
  • 微擎 网站开发工具网站建设 比选
  • wordpress msn space云浮seo
  • 建公司网站要多久广州网站设计建站
  • 临夏市建设局网站移动网站怎么做
  • 抚顺地区网站建设昆明网站建设兼职
  • 吉林省住房和建设厅网站一级a做爰片在线看免播放器网站
  • 德阳百度网站建设文创产品设计方案模板
  • 网站开发与维护考察试题wordpress制作网站教程
  • wordpress网站被拒登郑州房产网58同城网
  • 个人网站备案 服务内容怎么写怎么做小程序
  • 东莞企业自助建站系统网站运营可以转行做网站设计吗
  • 青海wap网站建设比较好中国域名网官网
  • 徐州建设工程交易网站定制开发源代码归谁
  • 响应式网站建站价格如何创建公众号微信免费的
  • 做外贸网站公司南通公司做网站
  • 手机网站和pc网站的区别瓷砖网站建设
  • 网站建设公司如何做大电商运营推广怎么做
  • 网站开发人员工资wordpress的安装教程
  • 格尔木市建设局网站做网站公司赚钱么
  • 企业网站的基本类型包括商业授权证明
  • 做网站设计制作的响应式布局
  • 呼市网站设计公司四川微信网站建设推广
  • 绍兴市建设局网站python报班一般多少钱
  • 商用营销型网站建设优化建站深圳农产品网站制作