「編寫一個程式求解字迷遊戲問題」
- 問題描述:輸入一些由字母構成的二維陣列,以及一些由單詞組成的一維陣列,目標是在二維陣列中找出能夠組成一維陣列中的單詞的元素。此問題稱爲:解字謎(英文版);
- 問題思路:對一維陣列進行處理,將單詞轉化爲char陣列,在二維陣列中對char陣列進行有序匹配,儲存匹配成功元素的下標到結果集,過程通過遞回及回圈配合處理。
程式碼如下:
public static void work1_2() {
String[][] index = new String[4][4];
findIndex(index, 0, 0);
for (int i = 0; i <index.length ; i++) {
System.out.println(i);
for (String s:index[i]) {
if (s!=null)System.out.print(s+"\t");
}
System.out.println();
}
}
public static String[][] findIndex(String[][] index, int i, int n) {
String[] targetList = {"this", "two", "fat", "that"};
char[][] charArea = {{'t', 'h', 'i', 's'}, {'w', 'a', 't', 's'}, {'o', 'a', 'h', 'g'}, {'f', 'g', 'd', 't'}};
if (i == 4) return index;
char[] chars = targetList[i].toCharArray();
for (int j = 0; j < charArea.length; j++) {
for (int k = 0; k < charArea[j].length; k++) {
if (charArea[j][k] == chars[n]) {
index[i][n] ="("+ (j+1)+ "," + (k+1)+")";
n++;
if (n == targetList[i].length()) {
i++;
n = 0;
}
return findIndex(index, i, n);
}
}
}
return index;
}