题目大意

给你n个数,让你用这n个数在组成k的情况下,找到所有的value,这些value也由这n个数组成,且这些value组合在一起能够组成k

解法

看到题目我的想法就是母函数= =不过wa了,后来发现因为母函数能找到这n个数所能形成的所有情况,但是可能两种情况是包含关系的。比如3,3,6这个数据可以形成6和9但是如果k是15的时候,你就不能得到因为9是由6生成的
dp[i][j]表示在和为i的情况下,能否得到j
那么当dp[i][j] = 1时,dp[i][j + c[k]]比然能得到,dp[i+c[k]][j+c[k]]也能得到。

C++代码

/**
6 18
5 6 1 10 12 2
dp[i-c[i]][k] -> dp[i][k],dp[i][k+c[i]]
*/ #include<bits/stdc++.h>
using namespace std; int a[];
int res[];
int dp[][];
int main(){
int n , m ;
cin >> n >> m;
for(int i = ; i <= n ; i++){
cin >> a[i];
}
sort(a+,a++n);
dp[][] = ;
for(int i = ;i <= n ; i++){
for(int j = m;j >= a[i];j --){
for(int k = ;k + a[i]<= m;k ++){
if(dp[j - a[i]][k]) dp[j][k] = dp[j][k+a[i]] = ;
}
}
}
int tot = ;
for(int i = ;i <= m; i ++) if(dp[m][i]) res[tot++] = i;
printf("%d\n",tot);
for(int i = ;i < tot;i ++) printf("%d ",res[i]);
}

最新文章

  1. Xcode 如何删除过期的Provisioning Profile文件
  2. 搞笑世界杯(codevs 1060)
  3. typeof instanceof 之间的区别总结
  4. HackerRank &quot;Bike Racer&quot;
  5. iOS开发——Swift篇&amp;Swift关键字详细介绍
  6. HDU 5478 Can you find it(数学问题)
  7. 为什么说2017全球云计算大会中国站 (Cloud Connect China 2017)不得不参加?
  8. C#学习笔记——数据库篇(1)
  9. # 20175329 2018-2019-3 《Java程序设计》第九周学习总结
  10. ASP.NET Core 2.x On Ubuntu
  11. 指针*p,p,&amp;p等辨别
  12. Linux centos7安装python3并且不影响python2
  13. HDU ACM 1856 More is better(并查集)
  14. Java InputStream 、 InputStreamReader和BufferedReader
  15. (转载)常用正则表达式大全!(例如:匹配中文、匹配html)
  16. 5分钟了解Mockito
  17. vs2013 CodeLens
  18. Nginx基础配置指令
  19. 小技巧:tar命令打包目录时,排除文件和目录的命令
  20. datanode无法启动问题

热门文章

  1. C# 异步编程,async与await的简单学习
  2. Centos7系统备份与恢复教程
  3. Mac ssh key生成
  4. Python基础面试题库
  5. 五、python中MD5加密
  6. 《ECMAScript6 入门》
  7. OpenStack 实现技术分解 (6) 通用库 — oslo_log
  8. 阶段3 1.Mybatis_12.Mybatis注解开发_6 mybatis注解开发一对一的查询配置
  9. 设置了responseType:Blob之后,如果返回json错误信息,如果获取?
  10. Spring Boot-配置