北京大学2013计算机所本科生保研夏令营考试——C:数字组合
2013-09-15 10:40
417 查看
原题链接:http://poj.grids.cn/jss2013/C/
问题描述:
总时间限制: 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的不同的组合方式的数目。
样例输入
样例输出
问题分析:
很水的一个题,居然只有23个人提交...不解释不多说,直接上代码.....
问题描述:
总时间限制: 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
问题分析:
很水的一个题,居然只有23个人提交...不解释不多说,直接上代码.....
#include<iostream> using namespace std; int number[1001]; int combine(int m,int n,int t) { if(t==0) return 1; if(m==n) { if(t==number[m]) return 1; else return 0; } if(number[m]<=t) { return combine(m+1,n,t-number[m])+combine(m+1,n,t); } else return combine(m+1,n,t); } int main() { int n,t; cin>>n>>t; for(int i=1;i<=n;i++) { cin>>number[i]; } cout<<combine(1,n,t)<<endl; return 0; }
相关文章推荐
- (改进)北京大学2013计算机所本科生保研夏令营考试——E:Oil Deposits
- 北京大学2013计算机所本科生保研夏令营考试——A:谁是你的潜在朋友
- 北京大学2013计算机所本科生保研夏令营考试——E:Oil Deposits
- 2013年北京大学夏令营及保研考试 -B题 冷血格斗场(待解决)
- 2012年北京大学计算机系夏令营上机考试
- 北京大学直博申请夏令营上机考试题目分析
- 【LIS】2017计算机学科夏令营上机考试 E:怪盗基德的滑翔翼
- 2014北京大学数字媒体技术优秀大学生夏令营上机考试-Do Not Gamble
- 【DFS填数】2017计算机学科夏令营上机考试 D:Safecracker
- 2017计算机学科夏令营上机考试 A:判决素数个数
- 2015年北京大学软件工程学科优秀大学生夏令营上机考试---A:整数序列的元素最大跨度值
- 北京大学计算机系2009应试硕士生上机考试(A-C)
- 北京大学计算机系2009应试硕士生上机考试(D-F)
- 2015年北京大学软件工程学科优秀大学生夏令营上机考试---B:整数奇偶排序
- 考无忧2013全国职称计算机考试软件保过版题库破解器
- 2012年清华大学计算机系保研上机考试
- 2017计算机学科夏令营上机考试 C:岛屿周长
- 【优先队列】2017计算机学科夏令营上机考试 G:实现堆结构
- 计算机等级考试2013版(新体系整理大全)
- 2017计算机学科夏令营上机考试-B题 编码字符串(简单题)