1291:数字组合

简介: 1291:数字组合

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

有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

1. #include <iostream>
2. #include <cstdio>
3. using namespace std;
4. int a[22],f[1005];
5. int n,t;
6. int main(int argc, char *argv[])
7. {
8.  scanf("%d %d",&n,&t);
9.  for(int i=1;i<=n;i++)
10.     scanf("%d",&a[i]);
11.   f[0]=1;
12.   for(int i=1;i<=n;i++)
13.     for(int j=t;j>=a[i];j--)
14.       f[j]+=f[j-a[i]];
15.   printf("%d\n",f[t]);
16.   return 0;
17. }
相关文章
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
7月前
数字组合 (计蒜客 - T1218)
数字组合 (计蒜客 - T1218)
|
算法 测试技术 C#
C++二分查找算法:最大为 N 的数字组合
C++二分查找算法:最大为 N 的数字组合
数字的转化规则?
转换规则:不管你要转的数据是什么,都是一位一位的去检测,如果第一位可以转成数字,就转,依次往后看每一位,直到碰到不能转或者转完为止,如果转不成就直接NaN
104 0
零基础VB教程034期:统计与分离字符串文本中的数字字母等
零基础VB教程034期:统计与分离字符串文本中的数字字母等
117 0
|
Python
【python实战】top1 数字组合——有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
【python实战】top1 数字组合——有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
692 0
【python实战】top1 数字组合——有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
|
算法
如何在不把数字转为字符串的前提下反转数字
算法问题:如何在不把数字转为字符串的前提下反转数字
73 0
|
C++
【C++操作手册】将字符串转化为数字、数字转化为字符串、字符转化为数字、数字转化为字符
【C++操作手册】将字符串转化为数字、数字转化为字符串、字符转化为数字、数字转化为字符
120 0
|
算法 C++
算法题:特殊的数字
我们规定,对于一个整数 a,如果其各位数字相加之和能够被 4 整除,则称它是一个特殊数字。 现在,给定一个整数 n,请你计算并输出不小于 n 的最小特殊数字。 输入格式
107 0
20天刷题计划-77. 组合
本题这是回溯法的经典题目。直接的解法当然是使用for循环,思路简单但效率相对没有优势,可以使用回溯搜索法,具体步骤如下 定义成全局变量便不必再当作参数传入函数 剪枝,判断当前长度和数组剩余长度能否构成一个k个数的组合 for 循环里 i 从 start 到 n。 比如,n = 5,k = 4,temp.size( ) == 1,此时代表我们还需要(4 - 1 = 3)个数字, 如果 i = 4 的话,以后最多把 4 和 5 加入到 temp 中,而此时 temp.size() 才等于 1 + 2 = 3, 不够 4 个,所以 i 没必要等于 4,i 循环到 3 就足够了。

热门文章

最新文章