打卡第一天 | 豆包MarsCode AI刷题
Java训练第一题(原题):小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选择方法可以达到这一目标。 解答+过程讲解:第一题答案(豆包):import java.util.ArrayList; import java.util.List;
public class Main { public static void main(String[] args) { // 示例输入 int[] numbers = {123, 456, 789};
// 调用解决方案函数
int result = solution(numbers);
// 输出结果
System.out.println(result);
}
public static int solution(int[] numbers) {
// 初始化计数器
int count = 0;
// 生成所有可能的组合
List<String> combinations = generateCombinations(numbers);
// 遍历所有组合
for (String combination : combinations) {
// 计算组合的各位数字之和
int totalSum = 0;
for (char digit : combination.toCharArray()) {
totalSum += Character.getNumericValue(digit);
}
// 判断和是否为偶数
if (totalSum % 2 == 0) {
count++;
}
}
return count;
}
public static List<String> generateCombinations(int[] numbers) {
List<String> combinations = new ArrayList<>();
generateCombinationsHelper(numbers, 0, "", combinations);
return combinations;
}
private static void generateCombinationsHelper(int[] numbers, int index, String current, List<String> combinations) {
if (index == numbers.length) {
combinations.add(current);
return;
}
String group = String.valueOf(numbers[index]);
for (char digit : group.toCharArray()) {
generateCombinationsHelper(numbers, index + 1, current + digit, combinations);
}
}
}