2985:数字组合(2.6基本算法之动态规划)
来源:互联网 发布:百度云盘mac低版本 编辑:程序博客网 时间:2024/06/05 07:54
2985:数字组合
总时间限制: 1000ms 内存限制: 65536kB
描述
有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如:
n=5,5个数分别为1,2,3,4,5,t=5;
那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。
输入
输入的第一行是两个正整数n和t,用空格隔开,其中1<=n<=20,表示正整数的个数,t为要求的和(1<=t<=1000)
接下来的一行是n个正整数,用空格隔开。
输出
和为t的不同的组合方式的数目。
样例输入
5 5
1 2 3 4 5
样例输出
3
#include<iostream>using namespace std;//http://noi.openjudge.cn/ch0206/2985///首先注意初始化的时候要让j=a[i]的时候的dp值为1,然后再去递推//也就是前i个数组合成t的情况为:本身为t+前i-1个数组合为t的情况+前i-1个数组合为t-本身的情况 int n,t,a[30];int dp[30][1100];int main(){ cin>>n>>t; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=t;j++){ if(j==a[i]){ //cout<<a[i]<<endl; dp[i][j]=1; } if(j>=a[i]){ dp[i][j]=dp[i][j]+dp[i-1][j]+dp[i-1][j-a[i]]; } else { dp[i][j]=dp[i-1][j]; } } } cout<<dp[n][t]<<endl;}
阅读全文
0 0
- 2985:数字组合(2.6基本算法之动态规划)
- 动态规划:数字组合
- 【openjudge 2.6基本算法之动态规划】(合集)
- 2718:移动路线(2.6基本算法之动态规划)
- 2728:摘花生(2.6基本算法之动态规划)
- 2989:糖果(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- 8462:大盗阿福(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- |NOIOJ|动态规划|2985:数字组合
- 动态规划练习题-10(数字组合)
- 算法 -- 数字三角形之动态规划
- Openjudge 2.6基本算法之动态规划:8782乘积最大
- Openjudge 2.6基本算法之动态规划:2718 移动路线
- Openjudge 2.6基本算法之动态规划:1996:登山
- [OpenJudge] 2.6基本算法之动态规划 摘花生
- 1481:Maximum sum(2.6基本算法之动态规划)
- 1775:采药( 2.6基本算法之动态规划)
- 2017秋招-技术岗-猿辅导-Java开发(2轮)
- 最全Pycharm教程(39)——Pycharm版本控制之本地Git用法
- eclipse不能识别web工程、web工程部署找不到jar包
- LeetCode: 498. Diagonal Traverse
- 分布式大数据存储:向上索引法
- 2985:数字组合(2.6基本算法之动态规划)
- Gym-101490H
- 找字符串中首次出现3次某个字符
- 删除子串
- 原创马踏联营
- leetcode 290.Word Pattern
- include<filename>和#include"filename"的区别
- .tar.bz2文件解压命令
- Composer安装Thinkphp5