该题的思路是:
首先将遍历整个数组
1、 把所有5倍数的数加起来存在一个变量num1 中
2、把所有3倍数的数加起来存在一个变量num2 中
3、剩余的数据存在一个list中
把两个变量相减得到一个差值 dif=num1 -num2
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static Scanner scanner;
public static void main(String[] args) {
// TODO Auto-generated method stub
scanner=new Scanner(System.in);
int len=scanner.nextInt();
int[]arrays=new int[len];
for(int i=0;i<len;i++){
arrays[i]=scanner.nextInt();
}
boolean flag=SplitArrysIntoTwoArrays(arrays);
System.out.println(flag);
}
private static boolean SplitArrysIntoTwoArrays(int[] arrays) {
int fiveCount=0;
int threeCount=0;
ArrayList<Integer> arrayList=new ArrayList<Integer>();
for(Integer arr:arrays){
if(arr%5==0){
fiveCount+=arr;
}if(arr%3==0){
threeCount+=arr;
}else {
arrayList.add(arr);
}
}
int diff=fiveCount-threeCount;
ArrayList<Integer> arrayList2=new ArrayList<Integer>();
arrayList2.add(0);
for(Integer alist:arrayList){
arrayList2=jizhihanshu(arrayList2,alist);
}
for(Integer sum:arrayList2){
if(sum==diff||sum==diff*(-1)){
return true;
}
}
return false;
}
private static ArrayList<Integer> jizhihanshu(
ArrayList<Integer> arrayList2, Integer alist) {
ArrayList<Integer> arrayList3=new ArrayList<Integer>();
for(Integer alist2: arrayList2){
arrayList3.add(alist2+alist);
arrayList3.add(alist2-alist);
}
return arrayList3;
}
}