题解 | #数组分组#
数组分组
http://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
int[] num = new int[n];
List<Integer> list = new ArrayList<>();
int cha = 0;
int sum = 0;
for(int i=0; i<n; i++){
int temp = in.nextInt();
if(temp%5 == 0){
cha += temp;
} else if(temp%3 == 0){
cha -= temp;
} else {
sum += temp;
list.add(temp);
}
}
sum += cha;
list.add(cha);
if(sum % 2 != 0){
System.out.println("false");
} else if(list.size() == 0){
System.out.println("true");
} else {
if(canDiv(list, 0, sum/2)){
System.out.println("true");
} else {
System.out.println("false");
}
}
}
}
public static boolean canDiv(List<Integer> list, int index, int sum){
if(index == list.size()) return sum == 0;
return canDiv(list, index+1, sum-list.get(index))||
canDiv(list, index+1, sum);
}
}
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
int[] num = new int[n];
List<Integer> list = new ArrayList<>();
int cha = 0;
int sum = 0;
for(int i=0; i<n; i++){
int temp = in.nextInt();
if(temp%5 == 0){
cha += temp;
} else if(temp%3 == 0){
cha -= temp;
} else {
sum += temp;
list.add(temp);
}
}
sum += cha;
list.add(cha);
if(sum % 2 != 0){
System.out.println("false");
} else if(list.size() == 0){
System.out.println("true");
} else {
if(canDiv(list, 0, sum/2)){
System.out.println("true");
} else {
System.out.println("false");
}
}
}
}
public static boolean canDiv(List<Integer> list, int index, int sum){
if(index == list.size()) return sum == 0;
return canDiv(list, index+1, sum-list.get(index))||
canDiv(list, index+1, sum);
}
}