题解 | #称砝码#
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
最简单最容易理解的解法
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str ="";
while((str = reader.readLine()) !=null){
String str1 = reader.readLine();
String str2 = reader.readLine();
int len = Integer.parseInt(str);
int[] a = new int[len];
int[] b = new int[len];
String[] c = str1.split(" ");
String[] d = str2.split(" ");
Set<Integer> set = new HashSet();
for (int i = 0; i < c.length; i++) {//依次遍历每个砝码
Integer[] x = new Integer[set.size()];
set.toArray(x);
int s1 = Integer.parseInt(c[i]);
int s2 = Integer.parseInt(d[i]);
while(s2>0) {//依次遍历砝码数
set.add(s1 * s2);//每个砝码与砝码数相乘
for (Integer n : x) {//将前一个砝码可能性与当前砝码称重相加
set.add(n+s1*s2);
}
s2--;
}
}
System.out.println(set.size()+1);
}
}
}
