5
package Ray; import java.util.*; public class Farmar { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()){ int n = in.nextInt(); // n 种砝码 int weights[] = new int[n]; int nums[] = new int[n]; for(int i = 0;i<n;i++){ weights[i] = in.nextInt(); } for(int i = 0;i<n;i++){ nums[i] = in.nextInt(); } System.out.println(getNums(n, weights, nums)); } in.close(); } private static int getNums(int n, int weight[], int nums[]) { int[] m = new int[n]; int[] x = new int[n]; int sum = 0; // 总的重量 for (int i = 0; i < n; i++) { m[i] = weight[i]; // 每种砝码的重量 x[i] = nums[i]; // 每种砝码的数量 sum += x[i] * m[i]; } boolean[] temp = new boolean[sum+1]; temp[0] = true; temp[sum] = true; for (int i = 0; i < n; i++) { for (int j = 0; j < x[i]; j++) { for (int k = sum; k >= m[i]; k--) { if (temp[k - m[i]]) temp[k] = true; } } } int count = 0; for (int i = 0; i <= sum; i++) { if (temp[i]) count++; } return count; } }