给定一个有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背包计数问题相关推荐

  1. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  2. 数字和为sum的方法数

    给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行为两个正整数 ...

  3. 2017滴滴校招 数字和为sum的方法数(DP)

    给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行: 第一行为两个正整 ...

  4. 动态规划之背包问题——01背包

    算法相关数据结构总结: 序号 数据结构 文章 1 动态规划 动态规划之背包问题--01背包 动态规划之背包问题--完全背包 动态规划之打家劫舍系列问题 动态规划之股票买卖系列问题 动态规划之子序列问题 ...

  5. 由Android 65K方法数限制引发的思考

    前言 没想到,65536真的很小. 1 Unable to execute dex: method ID not in [0, 0xffff]: 65536 PS:本文只是纯探索一下这个65K的来源, ...

  6. Android开发笔记(一百七十九)避免方法数过多的问题

    一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包.有时候运行这种App会报错"Cannot fit requested cla ...

  7. 算法53----换钱的最小次数和方法数【动态规划】

    一.题目:换钱的最小次数 给定数组arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数. 举个 ...

  8. 算法进阶面试题07——求子数组的最大异或和(前缀树)、换钱的方法数(递归改dp最全套路解说)、纸牌博弈、机器人行走问题

    第一题 给定一个数组,求子数组的最大异或和. 一个数组的异或和为,数组中所有的数异或起来的结果. 简单的前缀树应用 暴力方法: 先计算必须以i结尾的子数组的异或和,然后再计算机i+1的,以此类推... ...

  9. 算法3-加减号得数方法数

    题目 给定一个数组arr,你可以在每个数字之前决定+或者但是必须所有数字都参与 再给定一个数target,请问最后算出target的方法数是多少? 每一个数都参与运算,运算符号只有±,最终能得出tar ...

最新文章

  1. 阿里巴巴一位 70 后程序员的 26 个职场感悟!
  2. oop第二章1知识点汇总
  3. 针对MySQL死锁问题的思路分析
  4. 既生瑜何生亮 access_token VS refresh_token
  5. JQuery 对表单进行初始化操作
  6. SQL中使用视图的优点和缺点是什么
  7. mysql必知必会第一节
  8. Oracle全文索引之五 测试
  9. 阶段面试题_关于文案、交易系统、付费渗透率、阶段性目标的面试题解答
  10. java.util.enummap_java.util.EnumMap.clone()方法实例
  11. Flutter之SnackBar原理详解
  12. lvds输入悬空_LVDS原理及应用
  13. SSL证书以及其验证过程
  14. 互联网思维——平台思维
  15. 计算机系统中三级存储器结构,计算机三级存储体系(1)
  16. 服务器遇到Broken Pipe崩溃
  17. 间隔层设备和过程层简介
  18. UE4+手柄对应按键测试
  19. 高德地图 定位 设置文本
  20. DOTA2利雅得大师赛利用api多线程对选手数据和战队数据爬取与分析

热门文章

  1. 【ArcGIS微课1000例】0001:添加XY数据(Add XY data)生成shp
  2. python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组
  3. 计算机网络的网络层功能在内完成,计算机网络习题及答案
  4. 软件测试技术——软件测试概述
  5. 飞信linux下载文件,OpenFetion(飞信for Linux)
  6. 人生没有对与错,只是选择不同
  7. 看到这块Google的“墓地”,心中作何感想?| 今日最佳
  8. 战斗机各种世界之最,涨知识了。。。
  9. 一文读懂 AVL 树
  10. 《SAS编程与数据挖掘商业案例》学习笔记之十九