数字和为sum的方法数
来源:互联网 发布:学编程能做什么工作 编辑:程序博客网 时间:2024/06/06 19:37
题目描述
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
输入描述:
输入为两行:
第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)
第二行为n个正整数A[i](32位整数),以空格隔开。
输出描述:
输出所求的方案数
示例1
输入
5 15
5 5 10 2 3
输出
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
输入描述:
输入为两行:
第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)
第二行为n个正整数A[i](32位整数),以空格隔开。
输出描述:
输出所求的方案数
示例1
输入
5 15
5 5 10 2 3
输出
4
用动态规划,dp[i][j]表示用0-i中的数字组成j的方法数。
dp[i][j]=dp[i-1][j],if(j-v[i]<0),当无法使用第i个数时
dp[i][j] = dp[i-1][j - v[i]] + dp[i - 1][j],可以使用第i个数时,方法数为使用这个数dp[i-1][j-v[i]]和不使用这个数dp[i-1][j]之和。
#include<iostream>#include<vector>#include<algorithm>using namespace std;void show(vector<vector<int>>&v){for (int i = 0; i < v.size(); i++){for (int j = 0; j < v[i].size(); j++)cout << v[i][j] << " ";cout << endl;}}int main(){int n, sum;while (cin >> n >> sum){vector<int>v(n, 0);for (int i = 0; i < n; i++)cin >> v[i];vector<vector<int>>dp(n, vector<int>(sum + 1, 0));for (int i = 0; i < n; i++)dp[i][0] = 1;//对于零个有一种方法dp[0][v[0]] = 1;//cout << "init" << endl;//show(dp);for (int i = 1; i < n; i++){for (int j = 1; j <= sum; j++){if (j - v[i] >= 0)dp[i][j] = dp[i-1][j - v[i]] + dp[i - 1][j];//可以使用第i个数时else dp[i][j] = dp[i - 1][j];//不能使用第i个数}//cout << "i=" << i << endl;//show(dp);}cout << dp[n - 1][sum] << endl;}}
阅读全文
0 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个数字的和等于或者最接近与目标数
- shmget创建共享内存errno=22,Invalid argument错误问题
- ubuntu安装caffe
- Maven错误:'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing
- QT读入MySQL数据库报 “QSqlQuery::exec:database not open”
- delegate有两个事件时的返回值
- 数字和为sum的方法数
- Ceres(5): Solver
- theano T.dot 实例 (是tf.matmul而不是点乘)
- (BFS)Knight Moves--HDOJ
- scp远程拷贝文件出现permission denied,please try again的解决办法
- Func<int, int, string>返回string
- day22(SequenceInputStream,ByteArrayOutputStream,ObjectOutputStream)
- 素数算法的不同等级
- FAAC注意事项