称砝码--软件测试
来源:互联网 发布:cydia软件源 sim 编辑:程序博客网 时间:2024/05/16 04:32
题目描述
现有一组砝码,重量互不相等,分别为m1,m2,m3…mn;
每种砝码对应的数量为x1,x2,x3...xn。现在要用这些砝码去称物体的重量,问能称出多少中不同的重量。
注:
称重重量包括0
方法原型:public static int fama(int n, int[] weight, int[] nums)
输入包含多组测试数据。对于每组测试数据:第一行:n --- 砝码数(范围[1,10])第二行:m1 m2 m3 ... mn --- 每个砝码的重量(范围[1,2000])第三行:x1 x2 x3 .... xn --- 每个砝码的数量(范围[1,6])
利用给定的砝码可以称出的不同的重量数
21 22 1
5
import java.util.*;public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int n = scan.nextInt(); int[] m_weight = new int[n];//重量 int[] x_num = new int[n];//数量 for(int i = 0 ; i < n ; i++){ m_weight[i] = scan.nextInt(); } for(int i = 0 ; i < n ; i++){ x_num[i] = scan.nextInt(); } printNumOfDifferentWeight(n , m_weight , x_num); } scan.close(); } private static void printNumOfDifferentWeight(int n , int[] m_weight , int[] x_num){ Set<Integer> set = new HashSet<Integer>(); //先求出第一种砝码可能称出的重量,个数可以为0~x_num[0] (即n+1) for(int i = 0 ; i <= x_num[0] ; i++){ set.add(i * m_weight[0]); } //再在第一个砝码的基础上增加其他重量 //逐个增加砝码,更新集合set,i代表砝码的种类,从0开始 for(int i = 1 ; i < n ; i++){ //遍历第i个砝码的个数,从第二个砝码开始 //因为set无序集合并且没有get方法,所以将结果暂存于ArrayList中遍历 List<Integer> list = new ArrayList<Integer>(set); //j遍历第i种砝码的个数 for(int j = 1 ; j <= x_num[i] ; j++){ for(int k = 0 ; k < list.size() ; k++){ set.add(list.get(k) + j * m_weight[i]); } } } System.out.println(set.size()); }}
0 0
- 称砝码--软件测试
- 华为测试 称砝码
- 称砝码
- 称砝码
- 称砝码
- 称砝码
- 称砝码
- 称砝码******
- 称砝码
- 称砝码
- 称砝码
- 称砝码问题
- 华为oj_称砝码
- 华为oj 称砝码
- 华为oj 称砝码
- 华为oj:称砝码
- 华为oj 称砝码
- [华为OJ] 称砝码
- Codeforces Round #364 (Div. 2) D. As Fast As Possible
- Android中shape的使用
- cocos2d-x中shader的使用
- android studio module无法删除
- 【SSH快速进阶】——Spring IOC容器注入的几种方式
- 称砝码--软件测试
- UVA 11827 Maximum GCD ungetc函数将ch字符重新退到输入流
- java读取文件及文件流
- bzoj4196(树链剖分)
- vim操作详解
- 【9906】装箱问题
- 缩小浏览器窗口延迟执行代码
- MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)
- java之Treeset