블 루 브리지 컵: 성냥 게임 (전형 적 인 게임 알고리즘)
2921 단어 블 루 브리지 컵 알고리즘 훈련
。
1, 3x4 , 。
:
1. ( )。
2. 。
3. “ ”。
, “ ”。
:
1 , C2 ( , 、 ), , A2 。
,B2,B3,D2 。
C2 ,D2 , A2 ( C2 )。
4. , , 。
, ( )。
。
: , , 。
1 :
00-1
-000
0100
“0” , “1” , “-” 。
, 。
, :
1111
----
0010
:
1111
----
0110
/*
* : + +
*/
static boolean fun(char data[][]) {
// , ,
for (int i = 0; i < data.length; i++) {
String s = new String(data[i]).replaceAll("0", "");
if (s.contains("--")) {
return true;
}
}
// , ,
for (int i = 0; i < data[0].length; i++) {
String s = ("" + data[0][i] + data[1][i] + data[2][i]).replaceAll("0", "");
if (s.contains("11")) {
return true;
}
}
// ,
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
if (data[i][j] == '0') {
try {
data[i][j] = '-';
if (fun(data) == false) {
return true;
}
data[i][j] = '1';
if (fun(data) == false) {
return true;
}
} finally {
//
data[i][j] = '0';
}
}
}
}
return false;
}
static void solve(char data[][]) {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
if (data[i][j] == '0') {
try {
data[i][j] = '-';
//
if (fun(data) == false) {
showarr(data);
// System.out.println("true");
}
data[i][j] = '1';
if (fun(data) == false) {
showarr(data);
// System.out.println("true");
}
} finally {
//
data[i][j] = '0';
}
}
}
}
}
static void showarr(char data[][]) {
for (int i = 0; i < data.length; i++) {
System.out.println(new String(data[i]));
}
System.out.println();
}
public static void main(String[] args) {
// 3*4
char data[][] = new char[3][];
data[0] = "-000".toCharArray();
data[1] = "0000".toCharArray();
data[2] = "0000".toCharArray();
/*
* Scanner sc=new Scanner(System.in);
* data[0]=sc.nextLine().toCharArray();
* data[1]=sc.nextLine().toCharArray();
* data[2]=sc.nextLine().toCharArray();
*/
solve(data);
}