题解 | #数组分组#递归
数组分组
https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
import java.math.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.stream.*;
import java.util.regex.*;
import java.util.function.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = in.nextInt();
int[] a = new int[count];
for (int i = 0; i < count; i++) {
a[i] = in.nextInt();
}
System.out.println(group(a, 0, 0, 0));
}
static boolean group(int[] a, int index, int sum5, int sum3) {
// System.out.printf("index: %d, sum5: %d, sum3: %d\n", index, sum5, sum3);
if (index == a.length) {
if (sum3 == sum5) {
return true;
} else {
return false;
}
}
int curr = a[index];
if (curr % 5 == 0 ) {
// 注意这里不能使用index++
return group(a, index + 1, sum5 + curr, sum3);
} else if (curr % 3 == 0) {
return group(a, index + 1, sum5, sum3 + curr);
} else {
return group(a, index + 1, sum5, sum3 + curr)
|| group(a, index + 1, sum5 + curr, sum3);
}
}
}


