神奇的口袋——Java
题目描述:
有一个神奇的口袋,总的容积是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相关推荐
- [编程题]神奇的口袋 - Java
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2--an.John可以从这些物品中选择一些,如 ...
- 动态规划之神奇的口袋问题
问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40 John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1,a2,- ...
- 程序设计与算法----递归之神奇的口袋
问题描述 问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40 John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1 ...
- Bailian2759 神奇的口袋(2)【DP】
2759:神奇的口袋(2) 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个神奇的口袋,总的容积是400,用这个口袋可以变出一些物品,这些物品的总体积必须是400.John现在有n ...
- 北大培训课动态规划----神奇的口袋(百练2755)
北京大学暑期课<ACM/ICPC竞赛训练> ppt摘取 什么是动态规划? ●递归到动规的一般转化方法 递归函数有n个参数,就定义一个n维的数组,数组 的下标是递归函数参数的取值范围,数组 ...
- 动态规划之神奇的口袋
动态规划之神奇的口袋 题目 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品的体积分别是a1, ...
- 神奇的口袋(动态规划)--算法学习
问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出 一些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2--a ...
- Bailian2755 神奇的口袋【递归+DP】
2755:神奇的口袋 总时间限制: 10000ms 内存限制: 65536kB 描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得 ...
- Codeup-2044:神奇的口袋
题目描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2--an.John可以从这些物品中选 ...
最新文章
- jqgrid ajax 请求参数,如何将csrf_令牌传递给jqgrid的editurl的post参数?
- 让数据库变快的10个建议
- 编译原理 之 解释器
- Mac 系统如何实现挂载NTFS文件系统
- 并行算法设计与性能优化_CME 323: 分布式算法与优化(1)
- caffeine 缓存_使用Caffeine和Spring Boot的多个缓存配置
- C++类中的Static关键字
- WIn7虚拟机下运行H3CCloud出错问题
- 【IDEA】idea es 报错 Cause: invalid type code: 2D
- 客厅的WiFi在主卧收不到,什么方法简单便宜?
- Linux操作Oracle(13)——java执行sql查询语句 报错 “无法绑定由多个部分组成的标识符“ 解决方案
- android快速充电实现_Android 8.0 慢充和快充提示语的实现原理
- android 关联按键和坐标,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...
- popperjs V2 之应用库 tippy.js 源码阅读
- sysdig_Sysdig: 系统故障排查利器
- pytorch实现straight-through estimator(STE)
- 基于安卓的视频遥控小车
- 一个人的心态好比琴弦
- 高通Camera驱动(2)-- openinitialize
- OTB和VOT的评估指标