블 루 브리지 컵: 성냥 게임 (전형 적 인 게임 알고리즘)

제목:
           。
  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);

	}

좋은 웹페이지 즐겨찾기