求解字谜游戏java_编写一个程序求解字谜游戏问题。

这是一个使用Java编写的程序,用于解决字谜游戏问题。程序通过遍历字符矩阵,寻找可能的单词组合,并检查这些组合是否存在于预定义的单词列表中。它包括四个方向的搜索(水平、垂直、对角线),并在找到匹配单词时输出结果及其在矩阵中的位置。
摘要由CSDN通过智能技术生成

package wulei.test;

public class WordPuzzleTest {

public static final String[] WORDS = new String[]{"love","lin"};

public static final char[][] chars = {{'l','k','n','l'},

{'d','o','d','i'},

{'h','d','v','n'},

{'v','c','x','e'}};

public static void findWord(char[][] chars){

long start = System.currentTimeMillis();

for (int i = 0; i < chars.length; i++) {

for (int j = 0; j < chars.length; j++) {

for (int k = 0; k < chars.length; k++) {

for (int l = 0; l < chars.length; l++) {

if (i == k && j == l) {

printWord(String.valueOf(chars[i][j]), i, j, k, l);

continue;

}

if (k != i && j != l && (k - i) != (j - l) && (k - i) != (l - j)) {

continue;

}

StringBuffer stringBuffer = new StringBuffer();

if (i == k) {

if (j > l) {

for (int m = j; m >= l; m--) {

stringBuffer.append(chars[i][m]);

}

}else {

for (int m = j; m <= l; m++) {

stringBuffer.append(chars[i][m]);

}

}

}

if (j == l) {

if (i > k) {

for (int m = i; m >= k; m--) {

stringBuffer.append(chars[m][j]);

}

}else {

for (int m = i; m <= k; m++) {

stringBuffer.append(chars[m][j]);

}

}

}

if ((k - i) == (j - l)) {

if (i > k) {

for (int m = i,n = j; m >= k && n <= l; m--,n++) {

stringBuffer.append(chars[m][n]);

}

}else {

for (int m = i,n = j; m <= k && n >= l; m++,n--) {

stringBuffer.append(chars[m][n]);

}

}

}

if ((k - i) == (l - j)) {

if (i > k) {

for (int m = i,n = j; m >= k && n >= l; m--,n--) {

stringBuffer.append(chars[m][n]);

}

}else {

for (int m = i,n = j; m <= k && n <= l; m++,n++) {

stringBuffer.append(chars[m][n]);

}

}

}

printWord(stringBuffer.toString(), i, j, k, l);

}

}

}

}

System.out.println("-------------------------------------------------");

System.out.println("cost time:" + (System.currentTimeMillis() - start) + "ms");

}

//判断是否是既定的一个单词(或字符串)并打印

public static void printWord(String word,int i ,int j,int k,int l){

for (int m = 0; m < WORDS.length; m++) {

if (word.equals(WORDS[m])) {

System.out.println("find word:" + WORDS[m]);

System.out.println("scalar:" + "[" + (i+1) + "," + (j+1) + "]->[" + (k+1) + "," + (l+1) + "]");

}

}

}

public static void main(String[] args) {

findWord(chars);

}

}

//引用左潇龙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值