博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openjudge2985(数字组合)
阅读量:6150 次
发布时间:2019-06-21

本文共 757 字,大约阅读时间需要 2 分钟。

描述

有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 51 2 3 4 5

样例输出

3 思路 可以开一个二维数组f[i][j],f[i][j]表示前i个数组合出来值为j有多少种情况
1 #include
2 #include
3 using namespace std; 4 int f[30][1005]; 5 int a[30]; 6 int main() 7 { 8 int n,m; 9 scanf("%d%d",&n,&m);10 for(int i=1;i<=n;i++)11 {12 scanf("%d",&a[i]);13 f[i][a[i]]=1;14 }15 for(int i=1;i<=n;i++)16 for(int j=1;j<=m;j++)17 if(j>=a[i])f[i][j]+=f[i-1][j]+f[i-1][j-a[i]];18 else f[i][j]+=f[i-1][0]+f[i-1][j];19 printf("%d",f[n][m]);20 return 0;21 }
View Code

 

转载于:https://www.cnblogs.com/Vay-1219-zzssc/p/5998191.html

你可能感兴趣的文章
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>