该代码应该编写一个 Java 程序,该程序从标准输入中读取一个正整数列表,并确定它们中的任何一个是否可以写为其他输入整数的子集的总和。提示:搜索加起来为某个值的整数子集最好递归完成。但是,请避免生成所有子集。当您搜索总和为 x 的子集时,不必考虑大于 x 的输入整数。如果 y≤x 是其他输入整数之一,则对总和为 x 的子集的搜索可以分为在包含 y 和不包含 y 的子集之间搜索。
import java.util.Scanner;
import java.util.Arrays;
public class jodiejo {
public static int[] integers = new int[1000];
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int n = 0;
integers = new int[1000];
while (scan.hasNextInt()) {
integers[n] = scan.nextInt();
n++;
}
for (int i = 0; i < n; i++) {
searchSum(integers[i], i);
}
System.out.print("NO");
Arrays.sort(integers, 0, n);
}
public static void searchSum(int number, int position) {
for (int i = position - 1; i >= 0; i--) {
if (number - integers[i] == 0) {
System.out.print("YES");
System.exit(0);
} else if (number - integers[i] > 0) {
searchSum(number - integers[i], i);
} else if (number - integers[i] < 0) {
return
}
}
}
}