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

力扣-动态规划-494 目标和

思路

  1. dp数组定义:任意装 0 - i 下标的元素,装满容量 j 共有dp [i ,  j ] 种装法
  2. 递推公式:
    for (int i = 1; i < m; i++) {
        for (int j = 0; j <= cap; j++) {
            if (nums[i] > j) {
                dp[i][j] = dp[i - 1][j];
            } else {
                dp[i][j] = dp[i - 1][j] + dp[i - 1][j - nums[i]];
            }
        }
    }

    分为两种情况的总和:放第i个物品装满j,和不放第i个物品装满j - nums[i]

  3. dp数组初始化:第一行有恰好放进去,置为1,dp[0][0] 为0,第一列考虑0的个数
  4. 遍历顺序:左向右,上向下
  5. 时间复杂度:     O(n^2)

代码

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        int sum = 0;
        for (int n : nums)
            sum += n;
        if (( sum + target) % 2 == 1)
            return 0;
        int cap = (sum + target) / 2;
        if(cap < 0) return 0;
        int m = nums.size();
        vector< vector<int> > dp(m, vector<int>(cap + 1, 0));

        if (nums[0] <= cap)
            dp[0][nums[0]] = 1;
        dp[0][0] = 1;

        int numZero = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == 0)
                numZero++;
            dp[i][0] = (int) pow(2.0, numZero);
        }

        for (int i = 1; i < m; i++) {
            for (int j = 0; j <= cap; j++) {
                if (nums[i] > j) {
                    dp[i][j] = dp[i - 1][j];
                } else {
                    dp[i][j] = dp[i - 1][j] + dp[i - 1][j - nums[i]];
                }
            }
        }

        return dp[m-1][cap];
    }
};

相关文章:

  • mysql5.7离线安装及问题解决
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-ops.py
  • Coredns延迟NodeLocalDNS解决之道
  • Python标准库【os】5 文件和目录操作2
  • 【Python环境】配置极简描述
  • Debian系更新软件包时忽略指定的包
  • 3_借助大模型辅助内容生产-大模型ACP模拟题-真题
  • 萌新学 Python 之 os 模块
  • 边缘计算+多模态感知:户外监控核心技术解析与工程部署实践!户外摄像头监控哪种好?户外摄像头监控十大品牌!格行视精灵VS海康威视VS大华横评!
  • 安装electron 提示RequestError: certificate has expired
  • 安全传输,高效共享 —— 体验FileLink的跨网文件传输
  • 如何判断邮件列表中邮箱地址的有效性?
  • VMWare虚拟机Ubuntu Desktop怎么共享文件夹
  • FastExcel与Reactor响应式编程深度集成技术解析
  • 第四届大数据、区块链与经济管理国际学术会议
  • Maven中一些基础知识点
  • 单片机死机跑飞的原因
  • deepseek使用11
  • DS32编译优化问题【deepseek的功劳】
  • MulFS-CAP: Multimodal Fusion-supervisedCross-modal
  • 网站建立的研究方案/福州seo博客
  • wordpress全套视频教程/深圳seo秘籍
  • 期货网站做模拟/网站换了域名怎么查
  • 贵阳网站制作企业/昆明网络推广方式有哪些
  • 菡萏怡景装饰公司/唐山百度提升优化
  • 网站建设合并但与那个/网站功能优化的方法