拍卖

    xiaoxiao2021-03-25  95

    

    package xj;

    import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;

    public class PaMai { static int T,goods,man; static int data[][]; static int money[]; static int maxmoney; static boolean []Rused; static boolean []Sused;

     public static void main(String[] args) throws FileNotFoundException {   /* Scanner sc=new Scanner(System.in); */   Scanner sc=new Scanner(new File("src/PaiMai"));   T=sc.nextInt();   for (int t = 0; t < T; t++) {    goods=sc.nextInt();    man=sc.nextInt();    data=new int [man+1][3];    money=new int [man+1];    Rused=new boolean[man+1];    Sused=new boolean[goods+1];    for (int i = 1; i < man+1; i++) {      data[i][0]=sc.nextInt();data[i][1]=sc.nextInt();data[i][2]=sc.nextInt();      money[i]=sc.nextInt();    }    dfs(1,0);    /*for (int i = 1; i < man+1; i++) {     for (int j = 1; j < goods+1; j++) {      System.out.print(" "+data[i][j]);     }     System.out.println(" "+money[i]);    }*/    System.out.println(maxmoney);   }  }

     private static void dfs(int step, int sum) {   if(step>man){    if(maxmoney<sum){maxmoney=sum;}    return;   }   for (int i = 1; i <=man; i++) {    if(!Rused[i]){     //全买     if(!Sused[data[i][0]]&&!Sused[data[i][1]]&&!Sused[data[i][2]]){      sum+=money[i]*3;      Sused[data[i][0]]=true;      Sused[data[i][1]]=true;      Sused[data[i][2]]=true;      dfs(step+1,sum);      sum-=money[i]*3;      Sused[data[i][0]]=false;      Sused[data[i][1]]=false;      Sused[data[i][2]]=false;     }     //不买      dfs(step+1,sum);     //买两件      if(!Sused[data[i][0]]&&!Sused[data[i][1]]){       sum+=money[i]*2;       Sused[data[i][0]]=true;       Sused[data[i][1]]=true;       dfs(step+1,sum);       sum-=money[i]*2;       Sused[data[i][0]]=false;       Sused[data[i][1]]=false;      }      if(!Sused[data[i][1]]&&!Sused[data[i][2]]){       sum+=money[i]*2;       Sused[data[i][1]]=true;       Sused[data[i][2]]=true;       dfs(step+1,sum);       sum-=money[i]*2;       Sused[data[i][1]]=false;       Sused[data[i][2]]=false;      }      if(!Sused[data[i][0]]&&!Sused[data[i][2]]){       sum+=money[i]*2;       Sused[data[i][0]]=true;       Sused[data[i][2]]=true;       dfs(step+1,sum);       sum-=money[i]*2;       Sused[data[i][0]]=false;       Sused[data[i][2]]=false;      }    }       }  }

    }

    //

    2 5 3 1 2 3 50 2 4 5 90 1 3 4 70 12 4 1 2 3 50 4 5 6 70 7 8 9 60 10 11 12 90

    //

    410 810

    转载请注明原文地址: https://ju.6miu.com/read-15050.html

    最新回复(0)