ブルーブリッジカップスケジュール

3115 ワード

           A,B,C,D,E       5 ,  2 。
                          ,       。

  ,      ,      :

1.              3 (  :           )。

2.    ,   3         。

3.     ,     A B C D     2   。

4. B D E          。

5. A E       。

6. A C         4    (     )。

     :    ,  ABCDE           。     1,     0

A B C D E     1   ,      。

【入力・出力フォーマット要件】
      ,           。

     7x5   。  1 0  。        

          ,      。

        A,B,C,D,E      。

           。

  ,             。        (           )。
1101110
1101110

import java.util.ArrayList; public classスケジュール{public static int[]S={0,1};public static ArrayList list = new ArrayList();
public static void main(String[] args) {
    int[] A = new int [7];
    dfs(A, 0);
    String[] ss = new String [5];
    for (String s1 : list) 
         for (String s2 : list) 
             for (String s3: list) 
                 for (String s4: list) 
                     for (String s5: list){
                         ss[0] = s1;
                         ss[1] = s2;
                         ss[2] = s3;
                         ss[3] = s4;
                         ss[4] = s5;
                         check2(ss);
                     } 

}
private static void check2(String[] ss) {

    int count = 0;
    for (int i = 0; i < 7; i++) {
        //2.    ,   3         。
        if(ss[0].charAt(i) == '1' &&ss[1].charAt(i) == '1' &&
                ss[2].charAt(i) == '1' &&ss[3].charAt(i) == '1' &&ss[4].charAt(i) == '1' )count++;
    }
    if(count < 3)return;
    //3.     ,     A B C D     2   。
    for (int i = 0; i < ss[0].length(); i++) {//7
        int count2 =0;
        for (int j = 0; j < ss.length -1; j++) {//4
            if(ss[j].charAt(i) == '1')count2++;
        }
        if(count2<2)return;
    }
    // B D E          。


    if(ss[1].charAt(6) =='1' || ss[3].charAt(6) =='1' ||ss[4].charAt(6) =='1'||
            ss[0].charAt(2) == '0'||ss[4].charAt(2) == '0')return;
    int count3=0;
    for (int i = 0; i < ss[0].length(); i++) {
        if(ss[0].charAt(i) == '1' && ss[2].charAt(i) == '1')count3++;
    }
    if(count3<4)return; 
    for (String string : ss) {
        System.out.println(string);
    }
    System.out.println();
}
public static void dfs(int[] A, int step) {
    if(step == A.length) {
        check(A);
        return;
    }
    for(int i = 0;i < 2;i++) {
        A[step] = S[i];
        dfs(A, step + 1);
        A[step] = -1;
    }
}
public static void check(int[] A) {
    //1.              3 (  :           )。
    StringBuilder sb = new StringBuilder();
    int count = 0;
    for(int i = 0;i < 7;i++) {
        if(A[i] == 1) count++;
        sb.append(A[i]);
    }
    if(count == 5 && sb.indexOf("1111") == -1 &&(sb.substring(4) + 
            sb.substring(0 , 3)).indexOf("1111") == -1)//      5 ,  2 
       list.add(sb.toString());
}

}