【动态规划专栏】动态规划:似包非包---不同的二叉树

简介: 【动态规划专栏】动态规划:似包非包---不同的二叉树


题目来源

本题来源为:

Leetcode377. 组合总和 Ⅳ

题目描述

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

算法原理

1.状态表示

根据问题分析,分析出重复子问题

经验+题目要求

对于本题而言就是:

dp[i]表示:凑成总和为i,一共有多少种排列数

2.状态转移方程

因此状态方程为:

dp[i]+=dp[i-x];

3.初始化

dp[0]=1

4.填表顺序

从左往右

5.返回值

返回dp[target]

代码实现

动态规划的代码基本就是固定的四步:

1.创建dp表
2.初始化
3.填表
4.返回值

本题完整代码实现:

class Solution 
{
public:
    int combinationSum4(vector<int>& nums, int target) 
    {
        vector<double> dp(target+1);
        dp[0]=1;
        for(int i=1;i<=target;i++)
        {
            for(auto x:nums)
                if(i>=x)
                    dp[i]+=dp[i-x];
        }
        return dp[target];
    }
};
相关文章
|
6月前
|
算法
【动态规划专栏】动态规划:卡特兰数---不同的二叉树
【动态规划专栏】动态规划:卡特兰数---不同的二叉树
70 0
|
6月前
|
算法
【算法】——动态规划题目讲解
【算法】——动态规划题目讲解
|
6月前
|
算法
LeetCode刷题---283. 移动零(双指针)
LeetCode刷题---283. 移动零(双指针)
|
5月前
|
机器学习/深度学习 存储 算法
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
|
5月前
|
存储 算法
数据结构与算法之动态规划--旷工问题
数据结构与算法之动态规划--旷工问题
54 1
|
5月前
|
存储 算法 数据可视化
LeetCode 题目 96:从动态规划、递归到卡塔兰数实现不同的二叉搜索树
LeetCode 题目 96:从动态规划、递归到卡塔兰数实现不同的二叉搜索树
|
6月前
动态规划——OJ题(一)
动态规划——OJ题(一)
64 1
【动态规划刷题】整数拆分
【动态规划刷题】整数拆分
80 0
蓝桥杯备赛leetcode 70.爬楼梯,用最经典的题目来讲解动态规划
题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼梯顶部呢?
蓝桥杯备赛leetcode 70.爬楼梯,用最经典的题目来讲解动态规划
|
存储 JavaScript 算法