考试2

来源:互联网 发布:matlab 稀疏矩阵求逆 编辑:程序博客网 时间:2024/04/27 12:15


package 考试2;

import java.util.Scanner;

public class Kaoshi2 {
        public static int[][] thing;
        public static int[] a;
        public static int geshu;   
        public static int max;
        public static int res[]=new int[100];
        public static int respc=0;
        public static boolean isGoOn(int n,int para){                     //n=1   para=0
         int count=0;
         int pc=0;
         int thingnstart=thing[n][0]*60+thing[n][1];
         int thingnend=thing[n][2]*60+thing[n][3];
         if(para==0){
          for(int i=0;i<n;i++){
           if(a[i]==0) pc++;
           if(a[i]==0&&((thingnend<=thing[i][0]*60+thing[i][1])||(thingnstart>=thing[i][2]*60+thing[i][3])))  
            count++;
          }
          if(count==pc)  return true;
         }else if(para==1){
          for(int i=0;i<n;i++){
           if(a[i]==1) pc++;
           if(a[i]==1&&((thingnend<=thing[i][0]*60+thing[i][1])||(thingnstart>=thing[i][2]*60+thing[i][3])))  
            count++;
          }
          if(count==pc)  return true;
         }else{
          return true;
         }
         return false;
        }
        public static int time(){
         int sum=0;
         for(int i=0;i<geshu;i++){
          if(a[i]!=2) sum+=(thing[i][2]*60+thing[i][3]-(thing[i][0]*60+thing[i][1]));
         }
         return sum;
        }
        
        public static void dFS(int step){
         if(step==geshu){
          /*for(int i=0;i<geshu;i++){
           System.out.print(a[i]+" ");
          }
          System.out.println();*/
          int temptime=time();
          if(max<temptime) max=temptime;
          
          return;
         }
         for(int i=0;i<3;i++){
          if(isGoOn(step,i)){//step=1  i=0
           a[step]=i;                                                
           dFS(step+1);
          }
         }
        }
           public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            int testnum=sc.nextInt();
            int iunum=testnum;
            while(testnum-->0){
             max=0;
             geshu=sc.nextInt();
             a=new int[geshu];
             thing=new int[geshu][4];
                  for(int i=0;i<geshu;i++){
              for(int j=0;j<4;j++){
               thing[i][j]=sc.nextInt();
              }
             }
                  dFS(0);
                  res[respc++]=max;
             }
             for(int i=0;i<iunum;i++){
             System.out.println(res[i]);
             }
          }
}

0 0
原创粉丝点击