ブルーブリッジカップスケジュール
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());
}
}