このコードは、標準入力から正の整数のリストを読み取り、それらのいずれかが他の入力整数のサブセットの合計として記述できるかどうかを判別する Java プログラムを作成することになっています。ヒント: 特定の値になる整数のサブセットの検索は、再帰的に行うのが最適です。ただし、すべてのサブセットを生成することは避けてください。合計 x を使用してサブセットを検索する場合、x より大きい入力整数を考慮する必要はありません。y≤x が他の入力整数の 1 つである場合、合計が x になるサブセットの検索は、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
}
}
}
}