数字和为sum的方法数-01背包计数问题
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
输入描述:
输入为两行:
第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)
第二行为n个正整数Ai,以空格隔开。
输出描述:
输出所求的方案数
示例1
输入
5 15 5 5 10 2 3
输出
4
#include <iostream>
using namespace std;
const int N = 1010;
int dp[N][N];
int a[N];int main() {int n, k;cin >> n >> k;for (int i = 1; i <= n; i++)cin >> a[i];dp[0][0] = 1;for (int i = 1; i <= n; i++)for (int j = 0; j <= k; j++) {dp[i][j] = dp[i - 1][j];if (j >= a[i])dp[i][j] += dp[i - 1][j - a[i]];}cout << dp[n][k] << endl;return 0;
}
空间优化:
#include <iostream>
using namespace std;
const int N = 1010;
int dp[N];
int a[N];int main() {int n, k;cin >> n >> k;dp[0] = 1;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++)for (int j = k; j >= a[i]; j--) {dp[j] += dp[j - a[i]];}cout << dp[k] << endl;return 0;
}
数字和为sum的方法数-01背包计数问题相关推荐
- 牛客网 [编程题]数字和为sum的方法数
题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...
- 数字和为sum的方法数
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行为两个正整数 ...
- 2017滴滴校招 数字和为sum的方法数(DP)
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行: 第一行为两个正整 ...
- 动态规划之背包问题——01背包
算法相关数据结构总结: 序号 数据结构 文章 1 动态规划 动态规划之背包问题--01背包 动态规划之背包问题--完全背包 动态规划之打家劫舍系列问题 动态规划之股票买卖系列问题 动态规划之子序列问题 ...
- 由Android 65K方法数限制引发的思考
前言 没想到,65536真的很小. 1 Unable to execute dex: method ID not in [0, 0xffff]: 65536 PS:本文只是纯探索一下这个65K的来源, ...
- Android开发笔记(一百七十九)避免方法数过多的问题
一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包.有时候运行这种App会报错"Cannot fit requested cla ...
- 算法53----换钱的最小次数和方法数【动态规划】
一.题目:换钱的最小次数 给定数组arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数. 举个 ...
- 算法进阶面试题07——求子数组的最大异或和(前缀树)、换钱的方法数(递归改dp最全套路解说)、纸牌博弈、机器人行走问题
第一题 给定一个数组,求子数组的最大异或和. 一个数组的异或和为,数组中所有的数异或起来的结果. 简单的前缀树应用 暴力方法: 先计算必须以i结尾的子数组的异或和,然后再计算机i+1的,以此类推... ...
- 算法3-加减号得数方法数
题目 给定一个数组arr,你可以在每个数字之前决定+或者但是必须所有数字都参与 再给定一个数target,请问最后算出target的方法数是多少? 每一个数都参与运算,运算符号只有±,最终能得出tar ...
最新文章
- 阿里巴巴一位 70 后程序员的 26 个职场感悟!
- oop第二章1知识点汇总
- 针对MySQL死锁问题的思路分析
- 既生瑜何生亮 access_token VS refresh_token
- JQuery 对表单进行初始化操作
- SQL中使用视图的优点和缺点是什么
- mysql必知必会第一节
- Oracle全文索引之五 测试
- 阶段面试题_关于文案、交易系统、付费渗透率、阶段性目标的面试题解答
- java.util.enummap_java.util.EnumMap.clone()方法实例
- Flutter之SnackBar原理详解
- lvds输入悬空_LVDS原理及应用
- SSL证书以及其验证过程
- 互联网思维——平台思维
- 计算机系统中三级存储器结构,计算机三级存储体系(1)
- 服务器遇到Broken Pipe崩溃
- 间隔层设备和过程层简介
- UE4+手柄对应按键测试
- 高德地图 定位 设置文本
- DOTA2利雅得大师赛利用api多线程对选手数据和战队数据爬取与分析
热门文章
- 【ArcGIS微课1000例】0001:添加XY数据(Add XY data)生成shp
- python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组
- 计算机网络的网络层功能在内完成,计算机网络习题及答案
- 软件测试技术——软件测试概述
- 飞信linux下载文件,OpenFetion(飞信for Linux)
- 人生没有对与错,只是选择不同
- 看到这块Google的“墓地”,心中作何感想?| 今日最佳
- 战斗机各种世界之最,涨知识了。。。
- 一文读懂 AVL 树
- 《SAS编程与数据挖掘商业案例》学习笔记之十九