题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] m = null; int[] x = null; int index = 0; // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String line = in.nextLine(); if ( index == 0 ){ int len = Integer.parseInt(line); m = new int[len]; x = new int[len]; } if ( index == 1 ){ String[] ms = line.split(" "); for ( int i = 0; i < ms.length; i++){ m[i] = Integer.parseInt(ms[i]); } } if ( index == 2 ){ String[] xs = line.split(" "); for ( int i = 0; i < xs.length; i++){ x[i] = Integer.parseInt(xs[i]); } break; } index ++; } HashSet<Integer> set = new HashSet<>(); set.add(0); for( int i = 0 ; i < m.length; i++){ int weight = m[i]; int num = x[i]; ArrayList<Integer> list = new ArrayList<>(set); while ( num > 0){ for ( Integer val : list){ set.add(val + weight * num); } num--; } } System.out.print(set.size()); } }