数字和为sum的方法数
来源:互联网 发布:ubuntu设置中文输入法 编辑:程序博客网 时间:2024/06/05 01:19
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
输入描述:
输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数A[i](32位整数),以空格隔开。
输出描述:
输出所求的方案数
示例1
输入
5 155 5 10 2 3
输出
4
#include<iostream>using namespace std;//dp[i][j]表示用前i个值组成和为j的方案个数。//最终结果int类型存不下,需要64位数据。//注意:dp不能放在main里,栈存不下,需要放在全局数据区。int main(){long long dp[10001][10001];int n, sum;cin >> n >> sum;int data[1000];for (int i = 1; i <=n; i++) {cin >> data[i]; }//用0个元素不能组成1~sumfor (int j = 1; j < sum; j++)dp[0][j] = 0;//初始化dp,用前i个数组成和为0的方案,只有1种,就是什么都不取,和为0。for (int i = 0; i < n; i++)dp[i][0] = 1;for (int i = 1; i <= n; i++){for (int j = 0; j <= sum; j++){if (data[i] > j) //当前元素data[i]的值大于当前的和j,则只能取前面i-1个元素和值为j的个数dp[i][j] = dp[i - 1][j];else //当前元素data[i]的值小于或等于当前的和j,则可以取前面i-1个元素和值为j的个数或者前面i-1个元素和值为j-data[i]的个数dp[i][j] = dp[i-1][j]+dp[i-1][j-data[i]];}}cout << dp[n][sum] << endl;}
阅读全文
1 0
- 数字和为sum的方法数
- 数字和为sum的方法数
- 数字和为sum的方法数
- [编程题]数字和为sum的方法数
- 数字和为sum的方法数 滴滴笔试题
- 数据和为sum的方法数
- 2017滴滴校招 数字和为sum的方法数(DP)
- 【算法】拼凑面额+数字和为sum的方法数+走网格 (动态规划)
- 4Sum 4个数字的和为目标数
- 编程题——和为sum的方法数
- 滴滴出行2017秋招笔试编程题(二)——地下迷宫、数字和为sum的方法数
- 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数
- 数字和方法数
- 剑指offer38--数字的和为某个数
- Leetcode012--四个数字的和为指定数
- 41 - 找出数组中和为sum的 2个数字 | 找出和为sum的连续正整数序列
- 求一组数中的的和为给定值的三个数(3sum)
- 3Sum Closest 3个数字的和等于或者最接近与目标数
- java多线程(2)之CAS操作
- 使用retrofit做为网络请求时,解决多个BaseURL切换的问题
- 分享PPPoE校园网的Linux连接过程
- 视频码率,帧率和分辨率
- MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结
- 数字和为sum的方法数
- 数据库设计范式(MySQL为例)
- [Spring]事务回滚
- NStimer使用要点之必备知识点三
- GPS协议详解
- leetcode-lintcode-LRU缓存
- Linux TAR备份文件时排除指定文件
- jquery.lazyload实现图片延迟加载
- SAP UI5初步结构分析研究(三)