import java.util.*;
public class Main {
public static void main(String[] args) {
int sum1=0;
Scanner IN=new Scanner(System.in);
CheatExam a=new CheatExam(IN.nextInt(),IN.nextInt(),IN.nextInt(),IN.nextInt());
a.review(a.N1,1,a.timen1,1);
a.review(a.N2,1,a.timen2,2);
a.review(a.N3,1,a.timen3,3);
a.review(a.N4,1,a.timen4,4);
for(int i=1;i<=4;i++)
sum1=sum1+a.min[i];
System.out.println(sum1);
IN.close();
}
}
class CheatExam{
int N1,N2,N3,N4,suma,sumb,sum;//N为每科目题数,suma左脑总时间,sumb是右脑总时间
int[] timen1,timen2,timen3,timen4;
int[] min= {0,1000,1000,1000,1000};
boolean[] marked=new boolean[40];
boolean[] sign=new boolean[40];
Scanner in=new Scanner(System.in);
public CheatExam(int n1,int n2,int n3,int n4) {
N1=n1; N2=n2; N3=n3; N4=n4;
timen1=new int[N1+1];
timen2=new int[N2+1];
timen3=new int[N3+1];
timen4=new int[N4+1];
for(int i=1;i<=N1;i++)
timen1[i]=in.nextInt();
for(int i=1;i<=N2;i++)
timen2[i]=in.nextInt();
for(int i=1;i<=N3;i++)
timen3[i]=in.nextInt();
for(int i=1;i<=N4;i++)
timen4[i]=in.nextInt();
in.close();
}
public void review(int N,int x,int[] a,int m) {//共N题,在第x题,该科目每题时间数组a,计算出总时间放于min数组m位置
for(int i=1;i<=2&&x<=N;i++) {
if(!marked[x]) sign[x]=!sign[x];
marked[x]=true;
review(N,x+1,a,m);
marked[x]=false;
}
for(int i=1;i<=N;i++) {
if(sign[i]) suma=suma+a[i];
if(!sign[i]) sumb=sumb+a[i];
}
if(min[m]>Math.max(suma, sumb)) min[m]=Math.max(suma, sumb);
suma=0;sumb=0;
}
}
给我报runtime error,但编译器能通过,这是啥问题啊?求帮助