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

前言

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


习题

1.目标和

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

题面:

附上灵神代码:

java 复制代码
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]); // 不选 + 选
    }
}

后言

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

相关推荐
风象南几秒前
SpringBoot离线应用的5种实现方式
java·spring boot·后端
张哈大14 分钟前
【 java 集合知识 第二篇 】
java·开发语言·笔记·哈希算法
-qOVOp-29 分钟前
408第一季 - 数据结构 - 线性表II
数据结构
潮流coder31 分钟前
mybatis的if判断==‘1‘不生效,改成‘1‘.toString()才生效的原因
java·tomcat·mybatis
2401_8769075231 分钟前
IEC 61347-1:2015 灯控制装置安全标准详解
大数据·数据结构·人工智能·算法·安全·学习方法
T.Ree.1 小时前
【数据结构】_排序
数据结构·算法·排序算法·排序
二进制的Liao1 小时前
【数据分析】什么是鲁棒性?
运维·论文阅读·算法·数学建模·性能优化·线性回归·负载均衡
青临的踩坑之路1 小时前
Docker + Nginx + Logrotate 日志管理与轮换实践
java·开发语言
这儿有一堆花3 小时前
比特币:固若金汤的数字堡垒与它的四道防线
算法·区块链·哈希算法
BillKu3 小时前
Java + Spring Boot + Mybatis 实现批量插入
java·spring boot·mybatis