поэтому я работал над этим часами, но я не могу понять, как, черт возьми, искать по диагонали массив 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--;
}
}
Заранее благодарю!