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

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


题目来源

本题来源为:

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];
    }
};
相关文章
|
4月前
|
算法
【动态规划专栏】动态规划:卡特兰数---不同的二叉树
【动态规划专栏】动态规划:卡特兰数---不同的二叉树
45 0
|
3月前
|
机器学习/深度学习 存储 算法
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
|
3月前
|
存储 算法
数据结构与算法之动态规划--旷工问题
数据结构与算法之动态规划--旷工问题
43 1
|
3月前
|
存储 算法 数据可视化
LeetCode 题目 96:从动态规划、递归到卡塔兰数实现不同的二叉搜索树
LeetCode 题目 96:从动态规划、递归到卡塔兰数实现不同的二叉搜索树
|
4月前
|
算法
数据结构与算法之动态规划
数据结构与算法之动态规划
50 2
|
4月前
动态规划——OJ题(一)
动态规划——OJ题(一)
54 1
|
人工智能 算法
动态规划入门
动态规划入门
51 0
|
算法 Java
数据结构与算法之打家劫舍(二)&&动态规划思想
数据结构与算法之打家劫舍(二)&&动态规划思想
95 0
数据结构与算法之打家劫舍(二)&&动态规划思想
|
算法 Java C++
数据结构与算法之打家劫舍(一)&&动态规划思想
数据结构与算法之打家劫舍(一)&&动态规划思想
102 0
数据结构与算法之打家劫舍(一)&&动态规划思想
|
算法 C++
数据结构与算法之爬楼梯&&动态规划
数据结构与算法之爬楼梯&&动态规划
107 0
数据结构与算法之爬楼梯&&动态规划