题目描述:
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。

输入描述:
输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。

输出描述:
输出不同的选择物品的方式的数目

示例:

代码:

import java.util.Scanner;public class Main {static int count=0;//表示有多少种static int[] arr; //表示口袋static int n;//表示物品的种类public static void main(String[] args) {Scanner input=new Scanner(System.in);while(input.hasNext()){n=input.nextInt();arr=new int[n+1];/*这里的大小我们设置的比物品的种类要大1,因为在下边进行递归的时候,如果大小为n,因为在放第一个的时候还要考虑第一个的前一个(倒着放的:相对正着放方便一点),数组大小为n的话会造成数组溢出*/for(int i=1;i<=n;i++){arr[i]=input.nextInt();}}count(40,n);System.out.println(count);}public static void count(int s,int n){/*** s表示背包剩下的容量大小* n表示剩下的东西数量*///如果背包容量刚好等于零,说明刚好装满if(s==0){count++;}//背包容量小于零或者容量大于零但是东西数量小于零,则不能刚好装满(也就是要么装不下了要么不够装了)if(s<=0||(s>0&&n<0)){return ;}//从最后一个开始装count(s-arr[n],n-1);//如果最后一个和其他是都值完了,从倒数第二个开始count(s,n-1);}
}

神奇的口袋——Java相关推荐

  1. [编程题]神奇的口袋 - Java

    有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2--an.John可以从这些物品中选择一些,如 ...

  2. 动态规划之神奇的口袋问题

    问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40 John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1,a2,- ...

  3. 程序设计与算法----递归之神奇的口袋

    问题描述 问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40 John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1 ...

  4. Bailian2759 神奇的口袋(2)【DP】

    2759:神奇的口袋(2) 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个神奇的口袋,总的容积是400,用这个口袋可以变出一些物品,这些物品的总体积必须是400.John现在有n ...

  5. 北大培训课动态规划----神奇的口袋(百练2755)

    北京大学暑期课<ACM/ICPC竞赛训练> ppt摘取 什么是动态规划? ●递归到动规的一般转化方法  递归函数有n个参数,就定义一个n维的数组,数组 的下标是递归函数参数的取值范围,数组 ...

  6. 动态规划之神奇的口袋

    动态规划之神奇的口袋 题目 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品的体积分别是a1, ...

  7. 神奇的口袋(动态规划)--算法学习

    问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出 一些物品,这些物品的总体积必须是40.  John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2--a ...

  8. Bailian2755 神奇的口袋【递归+DP】

    2755:神奇的口袋 总时间限制: 10000ms 内存限制: 65536kB 描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得 ...

  9. Codeup-2044:神奇的口袋

    题目描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2--an.John可以从这些物品中选 ...

最新文章

  1. jqgrid ajax 请求参数,如何将csrf_令牌传递给jqgrid的editurl的post参数?
  2. 让数据库变快的10个建议
  3. 编译原理 之 解释器
  4. Mac 系统如何实现挂载NTFS文件系统
  5. 并行算法设计与性能优化_CME 323: 分布式算法与优化(1)
  6. caffeine 缓存_使用Caffeine和Spring Boot的多个缓存配置
  7. C++类中的Static关键字
  8. WIn7虚拟机下运行H3CCloud出错问题
  9. 【IDEA】idea es 报错 Cause: invalid type code: 2D
  10. 客厅的WiFi在主卧收不到,什么方法简单便宜?
  11. Linux操作Oracle(13)——java执行sql查询语句 报错 “无法绑定由多个部分组成的标识符“ 解决方案
  12. android快速充电实现_Android 8.0 慢充和快充提示语的实现原理
  13. android 关联按键和坐标,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...
  14. popperjs V2 之应用库 tippy.js 源码阅读
  15. sysdig_Sysdig: 系统故障排查利器
  16. pytorch实现straight-through estimator(STE)
  17. 基于安卓的视频遥控小车
  18. 一个人的心态好比琴弦
  19. 高通Camera驱动(2)-- openinitialize
  20. OTB和VOT的评估指标

热门文章

  1. CF1612C Chat Ban
  2. python实现陷波滤波器、低通滤波器、高斯滤波器、巴特沃斯滤波器
  3. 大学常用计算机软件推荐+安装教程
  4. 50 条有趣的 Python 一行代码
  5. HaploMerger2: 从高杂合二倍体基因组组装中重建单倍型
  6. 使用virt-install创建虚拟机
  7. pycharm设置中文,字体颜色修改,设置背景图片(图文讲解)
  8. 问答系统QA的评价指标MAP、MRR、Accuracy@N
  9. Latex 自用中文模板
  10. Linux cp 复制文件或复制文件夹