LeetCode 377.组合求和IV

给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。

示例:

nums = [1, 2, 3]
target = 4

所有可能的组合为:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)

请注意,顺序不同的序列被视作不同的组合。

因此输出为 7。

算法:动态规划

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<long long>f(target+1,0);
        f[0]=1;
        for(int i=1;i<=target;i++)
            for(int j=0;j<nums.size();j++)
                if(i>=nums[j])f[i]+=f[i-nums[j]]+0ull;
        //if(f[target]==0)return 0;
        return f[target]*1ull;
    }
};

原文地址:https://www.cnblogs.com/programyang/p/11154251.html

时间: 2024-10-09 09:29:31

LeetCode 377.组合求和IV的相关文章

LeetCode 216.组合求和III

出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数.解集不能包含重复的组合. 示例 1: 输入: k = 3, n = 7输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]] 算法:集合的二进制表示 class Solution { public: vector<vector<int>> combinationS

Leetcode 377. Combination Sum IV

Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target. Example: nums = [1, 2, 3] target = 4 The possible combination ways are: (1, 1, 1, 1) (1, 1, 2) (1,

leetcode 377 组合之和4

题目: 本质上就是dp里的找零或者解方程问题. 思路: dp. 代码: 1 class Solution { 2 public int combinationSum4(int[] nums, int target) { 3 int n = nums.length; 4 if (n == 0) { 5 return 0; 6 } 7 8 int[] opt = new int[target + 1]; 9 opt[0] = 1; 10 for (int i = 1; i <= target; i+

1135: 零起点学算法42——多组测试数据(求和)IV

1135: 零起点学算法42--多组测试数据(求和)IV Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 2439  Accepted: 1277[Submit][Status][Web Board] Description 还有一些输入是以上几种情况的组合,具体根据题目对前面几种情况进行组合 比如题目要求是多组测试数据 每组测试数据首先输入一个整数n(如果n=0就表示结束) 然后再输入n个整数 这

LeetCode:组合总数II【40】

LeetCode:组合总数II[40] 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. 说明: 所有数字(包括目标数)都是正整数. 解集不能包含重复的组合. 示例 1: 输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6],

[Leetcode] combinations 组合

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For example,If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 题意:给定1...n个数,求出每k个数的组合情况. 思路:使用DFS.定义中间数组变量,每当其大小为k时,将其存入结果res:若不等于

377. Combination Sum IV

是看到discuss里面的解法,因为用backtracking实在太多可能性了 思路是和https://leetcode.com/problems/climbing-stairs/ 在climbing stairs里面假如有n个台阶,每次可以跨一个台阶或者两个台阶,那么它的状态转移方程是res[i] = res[i - 1] + res[i - 2],初始化是res[0] = 1; res[1] = 1; 但是在本题中,每次不再只是可以跨一步或者两步了,每次可以跨nums数组里面的任意数字的步,

LeetCode 39. 组合总和(Combination Sum)

题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重复被选取. 说明: 所有数字(包括 target)都是正整数. 解集不能包含重复的组合. 示例 1: 输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ] 示例 2: 输入: candidates = [2,3,5], t

leetcode 216. 组合总和 III

找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有1 - 9的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的组合. 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]] 思路:和上一题的思路一样, 只是加了一个条件, 长度要是规定的长度 1 class Solution { 2 public: 3 void dfs