所以我已经为此工作了几个小时,但我似乎无法弄清楚如何在对角线上搜索 2D charr 数组。为此,我已经弄清楚了如何在垂直和水平方向上进行搜索。另外,我希望从对角线的所有 4 个方向上找到单词(左上角 -> 右下角/右下角 -> 左上角/右上角 -> 左下角/右上角 -> 左下角)这是我到目前为止得到的
public void searchDiagonal() {
char [][] grid = //is a [15][15] array
char[] sample = {'W','O','R','D'}
int startR = 0;
int startC = 0;
int endR = 0;
int endC = 0;
boolean wordFound = false;
int row = 0;
for(int i = grid.length - 1; i >= 0; i--)
{
if(i == grid.length - 1) {
//check the middle diagonal
for(int j = grid.length - 1; j >= 0; j--) {
int index = 0;
if(sample[index] == grid[j][j])
{
startR = j;
startC = j;
if(index == sample.length - 1) {
//word has been found
endR = j;
endC = j;
wordFound = true;
System.out.println("Word found at [" + startR + "][" + startC + "] & ["
+ endR + "][" + endC + "]");
break;
}
index++;
}
if(wordFound)
break;
}
}
}
for(int i = grid.length - 1; i >= 0; i--) {
for(int j = grid.length - 1; j >= 0; j--) {
}
//now i will handle up/down and row will handle left/right [row][i]
if(i == 13) {
row = 14;
}
int index = 0;
if(sample[index] == grid[row][i])
{
if(index == 0) {
startR = row;
startC = i;
}
//first char matches
if(sample.length - 1 == index) {
endR = row;
endxC = i;
wordFound = true;
SSystem.out.println("Word found at [" + startR + "][" + startC + "] & ["
+ endR + "][" + endC + "]");
break;
}
index++;
}
row--;
}
}
提前谢谢你!