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

力扣-动态规划-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];
    }
};


http://www.kler.cn/a/563071.html

相关文章:

  • html中的css
  • Windows版FFmpeg使用及B站视频下载示例python源码
  • c#笔记-基础知识
  • 轮式机器人在复杂地形中如何选择合适的全局路径规划算法
  • Python 实战:构建分布式文件存储系统全解析
  • 无框架简易Java服务器后端
  • S2GAE论文阅读
  • 前端 AJAX 一、AJAX概要
  • Docker01 - docker快速入门
  • 【奥卡姆剃刀原理-如何理解云计算和边缘计算 关键字摘取】
  • 2011-2019年各省人口数数据
  • 用 DeepSeek 打样!KubeSphere LuBan 用 3 天/3 分钟“干掉”大模型部署焦虑
  • 【SRC实战】隐藏商品零元购支付漏洞
  • 让AI“看见”光影变幻!华为云专利解锁动态光源渲染新境界
  • 数据保护API(DPAPI)深度剖析与安全实践
  • 使用快捷键高效管理 VSCode:提升工作效率,告别鼠标操作
  • 统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?
  • LabVIEW形状误差测量系统
  • Docker基础实践与应用举例
  • 10. docker nginx官方镜像使用方法