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

力扣动态规划-26【算法学习day.120】

前言

###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.目标和

题目链接:494. 目标和 - 力扣(LeetCode)

题面:

附上灵神代码: 

class Solution {
    private int[] nums;
    private int[][] memo;

    public int findTargetSumWays(int[] nums, int target) {
        int s = 0;
        for (int x : nums) {
            s += x;
        }
        s -= Math.abs(target);
        if (s < 0 || s % 2 == 1) {
            return 0;
        }
        int m = s / 2; // 背包容量

        this.nums = nums;
        int n = nums.length;
        memo = new int[n][m + 1];
        for (int[] row : memo) {
            Arrays.fill(row, -1); // -1 表示没有计算过
        }
        return dfs(n - 1, m);
    }

    private int dfs(int i, int c) {
        if (i < 0) {
            return c == 0 ? 1 : 0;
        }
        if (memo[i][c] != -1) { // 之前计算过
            return memo[i][c];
        }
        if (c < nums[i]) {
            return memo[i][c] = dfs(i - 1, c); // 只能不选
        }
        return memo[i][c] = dfs(i - 1, c) + dfs(i - 1, c - nums[i]); // 不选 + 选
    }
}

后言

上面是动态规划相关的习题,共勉

 


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

相关文章:

  • 记录docker 卡住不动了
  • WebSocket 握手过程
  • PDF Shaper:免费多功能 PDF 工具箱,一站式满足您的 PDF 需求!
  • Prompt通用技巧1
  • 如何将3DMAX中的3D文件转换为AutoCAD中的2D图形?
  • Git 分布式版本控制工具使用教程
  • DeepSeek API 调用 - Spring Boot 实现
  • 【经验分享】Linux 系统安装后内核参数优化
  • C++中函数的调用
  • 机器学习 - 进一步理解最大似然估计和高斯分布的关系
  • kafka服务端之日志磁盘存储
  • 从零开始设计一个完整的网站:HTML、CSS、PHP、MySQL 和 JavaScript 实战教程
  • 如何评估云原生GenAI应用开发中的安全风险(下)
  • MySQL 中可以通过添加主键来节省磁盘空间吗?(译文)
  • jQuery UI 下载指南
  • 腾讯云HAI部署DeepSeek结合Ollama API搭建智能对话系统
  • [QMT量化交易小白入门]-二十二、deepseek+cline+vscode,让小白使用miniQMT量化交易成为可能
  • MR30分布式IO模块:驱动智能制造工厂的工业互联与高效控制新范式
  • React进行路由跳转的方法汇总
  • 在 Qt 开发中,可以将 QML 封装成库
  • 基于Springmvc+MyBatis+Spring+Bootstrap+EasyUI+Mysql的个人博客系统
  • JVM的栈里面存的是栈帧,栈帧里面存的是什么?
  • Unity底层C#处理机制深度解析
  • eBPF入门教程(Ubuntu 24.04)
  • JavaScript设计模式 -- 工厂模式
  • 五、OSG学习笔记-矩阵变换