题目描述:

给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。

输入描述:
输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数A[i](32位整数),以空格隔开。
输出描述:
输出所求的方案数
示例1
输入

5 15

5 5 10 2 3

输出

4

思路:

这道题用递归可以很方便地做出来,不过时间复杂度会比较大。用动态规划做可以解决这个问题,最重要的是要找到状态转移方程。dp[i][j]代表前i个数中数字和为j的方案数,有这样的关系:dp[i][j]=dp[i-1][j-narr[i]]+dp[i-1][j]; 表示前i个数中数字和为j的方案数=前i-1个数中数字和为 j减去i位置的数 的方案数+前i-1个数中数字和为j的方案数。

当i位置的数刚好等于j时,方案数会增加一。

当i位置的数大于j时,显然dp[i][j]=dp[i-1][j]

JavaScript:

var arr=readline().split(' ');
var n=parseInt(arr[0]);
var m=parseInt(arr[1]);
var narr=readline().split(' ').map(function (item) {return parseInt(item);
});
narr.unshift(0);
var dp=[];
for(var i=0;i<=n;i++)
{var temp=new Array(m+1).fill(0);dp.push(temp);}//dp
for(var i=1;i<=n;i++)
{for(var j=1;j<=m;j++){if((j-narr[i])<0){dp[i][j]=dp[i-1][j];}else if((j-narr[i])==0)dp[i][j]=dp[i-1][j]+1;elsedp[i][j]=dp[i-1][j-narr[i]]+dp[i-1][j];}}
print(dp[n][m]);

牛客网 [编程题]数字和为sum的方法数相关推荐

  1. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  4. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  5. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  6. 牛客网—编程题(1)牛牛的礼物

    题目描述 众所周知,牛妹有很多很多粉丝,粉丝送了很多很多礼物给牛妹,牛妹的礼物摆满了地板.地板是N\times MN×M的格子,每个格子有且只有一个礼物,牛妹已知每个礼物的体积.地板的坐标是左上角(1 ...

  7. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  8. 牛客网 [编程题]餐馆

    题目描述: 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数: 有m批客人,每批客人有两个参数:b人数,c预计消费金额. 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消 ...

  9. 牛客网编程题07--提取不重复的整数

    题目 代码: // ExtractNum.cpp : 定义控制台应用程序的入口点. // 从右到左 提取一个不重复的整数 // 提取,string转int,int转string#include &qu ...

最新文章

  1. 太赫兹芯片是什么原理_太赫兹波养生鞋 芯片、鞋垫和材质的详细了解专利技术~太赫兹芯...
  2. AI“换脸”打开潘多拉魔盒,如何应对?
  3. Java HashMap涉及的数据结构及实现
  4. C++线性序列容器vector简单总结
  5. 信息安全复习2关于网络安全
  6. Java并发编程之ThreadLocal源码分析
  7. 织梦cms技巧:织梦登录后台显示空白页的解决办法
  8. CSS的盒子模型(Box Model)
  9. how debug option is handled - handle_debug
  10. Android-Binder 简析
  11. web.xml文件的作用
  12. 阿里研究院:数据治理解决方案,附7篇数据治理完整版PDF下载
  13. 如何提高缓存命中率(Redis)
  14. 计算机能考四川司法学院吗,四川司法警官职业学院计算机文化基础课程在线考试系统...
  15. FIT2CLOUD入选2018 Gartner Cool Vendor
  16. php递归算法计算n 介乘,递归算法示例——计算N的阶乘
  17. 时间管理——34枚金币
  18. 图片打印设置之适应边框打印
  19. 划分训练集,验证集,测试集
  20. crontab 每天凌晨12点定时器_Linux下使用crontab实现mysql数据库自动备份

热门文章

  1. 实战Spring Boot 2.0系列(一) - 使用Gradle构建Docker镜像
  2. 关于在vue中结合数组方法的this的指向问题
  3. linux命令(实用)
  4. 解决WP后台无法安装插件
  5. Oracle dataGuard专题:Rman通过duplicate创建standby
  6. datetime mysql 查询_mysql数据库时间类型datetime、bigint、timestamp的查询效率比较
  7. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)
  8. 推荐5款好用的安卓版RSS应用
  9. 通过 User-Agent 请求头判断设备类型
  10. myeclipse背景设置