博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] Backpack VI 背包之六
阅读量:6628 次
发布时间:2019-06-25

本文共 1576 字,大约阅读时间需要 5 分钟。

Given an integer array nums with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.

 Notice

The different sequences are counted as different combinations.

Example

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

The possible combination ways are:[1, 1, 1, 1][1, 1, 2][1, 2, 1][2, 1, 1][2, 2][4]

return 6

不太懂这题名称为啥叫backpack,LeetCode上的原题,请参见我之前的博客 。

解法一:

class Solution {public:    /**     * @param nums an integer array and all positive numbers, no duplicates     * @param target an integer     * @return an integer     */    int backPackVI(vector
& nums, int target) { vector
dp(target + 1, 0); dp[0] = 1; for (int i = 1; i <= target; ++i) { for (auto a : nums) { if (a <= i) { dp[i] += dp[i - a]; } } } return dp.back(); }};

解法二:

class Solution {public:    /**     * @param nums an integer array and all positive numbers, no duplicates     * @param target an integer     * @return an integer     */    int backPackVI(vector
& nums, int target) { vector
dp(target + 1, 0); dp[0] = 1; sort(nums.begin(), nums.end()); for (int i = 1; i <= target; ++i) { for (auto a : nums) { if (a > i) break; dp[i] += dp[i - a]; } } return dp.back(); }};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
pandas入门
查看>>
渐进增强 优雅降级
查看>>
angulajs中引用chart.js做报表,修改线条样式
查看>>
mysql之高可靠
查看>>
ubuntu中使用eclipse开发android,logcat显示问题
查看>>
学习英文之社区,博客及源码
查看>>
Virtual Machine Manager 2012 R2创建SQL 配置文件
查看>>
rsync同步工具基础介绍01
查看>>
SCOM 2012 R2监控Microsoft Azure服务(2)配置Azure监控
查看>>
统计客户端连接数
查看>>
CentOS6.5升级内核到3.10.28
查看>>
易宝典文章——用ISA 2006标准版发布Exchange 2010的OWA系列之创建Web侦
查看>>
Linux Squid代理之普通代理
查看>>
软件测试质量和效率评价之我见
查看>>
八、IO优化(5)使用文件组
查看>>
Hadoop笔记整理(一):Hadoop概述
查看>>
Django Admin 录入中文错误解决办法
查看>>
我的第一个vExpert
查看>>
用户名和计算机名命名规范
查看>>
CSS选择器 类选择器 .classA.classB 和.classA .ClassB的区别
查看>>