该题的思路是:
首先将遍历整个数组
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; } }