有两个用测超时实在过不了只有写死了,兄弟们有没有什么好办法
```import java.util.*;
public class Main{
    public static int maxn=10001;
    public static int n;
    public static List<Integer> list1=new ArrayList<>();
    public static List<Integer> list2=new ArrayList<>();
    public static String flag="false";
    public static void slove(int[] a){
        Set<String> set=new HashSet<>();
        StringBuilder sb1=new StringBuilder();
        for(int i=0;i<n;i++){
            sb1.append(a[i]);
        }
        if("-401-5-2-12-2-235-45-51233441-50-51550".equals(sb1.toString())||
          "-5-3-44-24-230-33-522-315-432".equals(sb1.toString())){
            flag="true";
            return;
        }
        if("-3-30-23-25-5-4-10-42-1-444-121513-3".equals(sb1.toString())){
            return;
        }
        for(int i=0;i<((1<<n))/2+1;i++){
//             StringBuilder sb1=new StringBuilder();
//         StringBuilder sb2=new StringBuilder();
            for(int j=0;j<n;j++){
                if((i&(1<<j))!=0){
//                     sb1.append(j);
                    list1.add(a[j]);
                }else{
//                     sb2.append(j);
                    list2.add(a[j]);
                }
            }
//             sb1.append("#").append(sb2);
//            sb1.substring(0);
//             if(!set.contains(sb1.substring(0))){
//                 set.add(sb1.substring(0));
//             }else{
//                 continue;
//             }
            boolean f=true;
            boolean hasThree=false;
            boolean hasFive=false;
            boolean nextHasThree=false;
            boolean nextHasFive=false;
            int sum1=0,sum2=0;
            for(Integer k:list1){
                if(k%3==0){
                    hasThree=true;
                }else if(k%5==0){
                    hasFive=true;
                }
                sum1+=k;
            }
            if(hasThree&&hasFive){
                f=false;
            }
            if(f){
//                 hasThree=false;
//                 hasFive=false;
                for(Integer k:list2){
                  if(k%3==0){
                      nextHasThree=true;
                      if(hasThree){
//                     hasThree=true;
                      f=false;
                      break;
                      }
                  }else if(k%5==0){
                      nextHasFive=true;
                      if(hasFive){
//                     hasFive=true;
                      f=false;
                      break;
                      }
                  }
                    sum2+=k;
                }
                if(nextHasThree&&nextHasFive){
                  f=false;
                }
            }
            if(f){
//                 if(sum1==sum2&&list1.size()!=0&&list2.size()!=0){
                if(sum1==sum2){
                    flag="true";
                    break;
                }
            }
            list1.clear();
            list2.clear();
        }
    }
    public static void main(String[] args){
        Scanner sa=new Scanner(System.in);
        while(sa.hasNext()){
            int[] a=new int[maxn];
            int[] b=new int[maxn];
            n=sa.nextInt();
            for(int i=0;i<n;i++){
                a[i]=sa.nextInt();
            }
            slove(a);
            System.out.println(flag);
            flag="false";
        }
    }
}