Combination Sum IV 组合数
来源:互联网 发布:中国汽车销售数据 编辑:程序博客网 时间:2024/05/20 18:19
声明:原题目转载自LeetCode,解答部分为原创
Problem :
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 = 4The possible combination ways are:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)Note that different sequences are counted as different combinations.Therefore the output is 7.
Follow up:
What if negative numbers are allowed in the given array?
How does it change the problem?
What limitation we need to add to the question to allow negative numbers?
Solution :
思路:第二类的背包问题,相较于第一类,每次的操作不再是“针对某一个特定的数值,选择放入或者不放入”,而是“针对所有的数值,选择哪些数值放入,哪些数值不放入”。同时,根据题意,数量与放入的顺序有关,因此应该把这个问题当成排列问题来看待。
假定f(a)为数值之和为a的排列的种类数,则状态转化方程为 f(a) = ∑(f(a - array[ i ])),其中 i 的取值为0,1,2,...n
代码如下:
#include<iostream>#include<vector>using namespace std;class Solution {public: int combinationSum4(vector<int>& nums, int target) { vector<int> count_of_sum(target + 1, 0); count_of_sum[0] = 1; for(int i = 1; i <= target ; i ++) { for(int j = 0 ; j < nums.size(); j ++) { if(i - nums[j] >= 0) count_of_sum[i] += count_of_sum[i - nums[j]];}}return count_of_sum[target]; }};int main(){Solution text;vector<int> temp(3,0);for(int i = 0 ; i < 3; i ++)temp[i] = i + 1;cout << text.combinationSum4(temp, 4) << endl;return 0;}
阅读全文
0 0
- Combination Sum IV 组合数
- Combination Sum 组合数之和
- 【Leetcode】Combination Sum IV
- [leetcode] Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Combination Sum IV
- Combination Sum IV
- [377] Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Leetcode: Combination Sum IV
- leetcode_377 Combination Sum IV
- Combination Sum IV
- LeetCode Combination Sum IV
- POJ 1608 Banal Tickets 笔记
- [LeetCode] Zuma Game
- java线程面试题
- 180.n1-科大讯飞语音识别
- 面试中关于Java你所需知道的的一切
- Combination Sum IV 组合数
- 关于TP框架中验证码的制作
- java中你所不知道的'=='
- POJ 1616 Harmonic Periods 笔记
- IMWeb提升营Day6 | 训练题36:两个链表的第一个公共结点
- [LeetCode] Combination Sum 和确定的组合数的个数
- POJ 1617 Crypto Columns 笔记
- java关键字valatile超详细解析
- Spring Boot 初识