题目描述
编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,
所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回
true;不满足时返回false。
输入描述:
第一行是数据个数,第二行是输入的数据
输出描述:
返回true或者false
输入例子:
4
1 5 -5 1
输出例子:
true
# Java
import java.util.math;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int sum1=0, sum2 = 0;
int count = 0;
int[] a = new a[n];
for(int i = 0; i < n; i++){
int temp = sc.nextInt();
if(temp % 5 == 0){
sum1 += temp;
}else if(temp % 3 == 0){
sum2 += temp;
}else{
a[count++] = temp;
}
}
sum = math.abs(sum1 - sum2);
System.out.println(f(0,count,a,0,sum));
}
}
private static boolean f(int i, int n, int[] a, int result, int sum){
if(i == n)
return math.abs(result) == sum;
else{
return f(i+1, n, a, result + a[i], sum) || f(i+1, n, a, result-a[i], sum);
}
}
}