编写一个程序求解字谜游戏问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编写⼀个程序求解字谜游戏问题
问题描述:输⼊是由⼀些字母和单词构成的⼆维数组,⽬标是找出字谜中的单词,这些单词可以是⽔平、垂直或沿对⾓线以任何⽅向放置。
编写⼀个程序求解字谜游戏问题
t h i s 找出 this、two、fat、that
w a t s
o a h g
f g d t
分析:⽅向有8种
1从左到右 2从右到左
3从上到下 4从下到上
5从左上到右下 6从右下到左上
7从左下到右上 8从右上到坐下
已经头⽪发⿇
/**
* @description: 问题描述:输⼊是由⼀些字母和单词构成的⼆维数组,⽬标是找出字谜中的单词,这些单词可以是⽔平、垂直或沿对⾓线以任何⽅向放置。
* 编写⼀个程序求解字谜游戏问题
* t h i s 找出 this、two、fat、that
* w a t s
* o a h g
* f g d t
分析:⽅向有8种
1从左到右 2从右到左
3从上到下 4从下到上
5从左上到右下 6从右下到左上
7从左下到右上 8从右上到坐下
已经头⽪发⿇
* @return: void
* @author: mufeng
* @time: 2020/4/25 10:37
*/
@Test
public void test3(){
String[] words={"this","two","fat","that","dgf"};
char[][] two_dimensional_char={{'t','h','i','s'},{'w','a','t','s'},{'o','a','h','g'},{'f','g','d','t'}};
findWords(two_dimensional_char,words);
}
private void findWords(char[][] two_dimensional_char, String[] words) {
//1从左到右
//2从右到左
for(int x=0;x<two_dimensional_char.length;x++){
StringBuilder lr=new StringBuilder();
StringBuilder rl=new StringBuilder();
//1从左到右
for(int y=0;y<two_dimensional_char[x].length;y++){
lr.append(two_dimensional_char[x][y]);
}
//2从右到左
for(int y=two_dimensional_char[x].length-1;y>=0;y--){
rl.append(two_dimensional_char[x][y]);
}
for(int i=0;i<words.length;i++){
//1从左到右
if(lr.toString().contains(words[i])){
System.out.print(words[i]);
int i1 = lr.toString().indexOf(words[i]);
for(int z=i1;z<words[i].length();z++){
System.out.print("["+x+","+z+"]");
}
System.out.println();
}
//2从右到左
if(rl.toString().contains(words[i])){
System.out.print(words[i]);
int i1 = rl.toString().indexOf(words[i]);
for(int z=rl.length()-1-i1;z>=0;z--){
System.out.print("["+x+","+z+"]");
}
System.out.println();
}
}
}
//5从左上到右下 6从右下到左上(简单)
//7从左下到右上 8从右上到坐下(简单)
//3从上到下 4从下到上
// 对⾓线翻转,打印需要旋转之前的
tochar(two_dimensional_char);
}
public char[][] tochar(char[][] chars){
char[][] toarr=new char[chars.length][chars.length];
int k=0;
for(char[] x:chars){
for(int i=0;i<x.length;i++){
toarr[i][k]= chars[k][i];
}
k++;
}
return toarr;
}
代码还未写完,思路已经很明确。