例如
6 28
1 1 2 3 25 26
输出:
4
代码:
import java.util.*;
public class Main {
public static int[] numbers;
public static Set<String> resultSet = new HashSet<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
int target = scanner.nextInt();
numbers = new int[count];
for (int i = 0; i < count; i++) {
numbers[i] = scanner.nextInt();
}
Arrays.sort(numbers);
getWays(0, target, new ArrayList<>());
System.out.println(resultSet.size());
// 打印子集
System.out.println(resultSet);
}
public static void getWays(int index, int target, List<Integer> list) {
while (index < numbers.length) {
int number = numbers[index];
if (number > target) {
return;
}
List<Integer> integers = new ArrayList<>(list);
integers.add(number);
if (number == target) {
resultSet.add(Arrays.toString(integers.toArray()));
return;
}
getWays(++index, target - number, integers);
}
}
}
文章同时会更新到公众号,觉得对你有帮助或者有用的可以关注一下哦