Если вам известна длина строки и вы знаете индекс цели (найденный путем сканирования всего массива на х, то вычислить индекс соседних квадратов тривиально
int i= //some index;
int l= //row length;
int y = i/l;//the floored quotient is the y offset
int x = i % l;//the remainder is the x offset
//Note that a negative result or a number greater than the whole array length is illegal so you have to catch that in your logic
int n= i-w;// skip a row back
int s = i+w;// skip a row forward
//if we hit the end then illegal else adjacent
int e= x+1 ==l? -1 : i+1;
int w= x-1 <0? -1: i-1;
// Если вы не хотите преобразовывать список строк в двумерный массив, просто переходите строка за строкой, как указано выше, но y теперь просто становится индексом в вашем Lst, а x - это сканирование строки. Когда вы найдете цельсимвол его смежных значений будет:
char n = list[y-1][x];
char s = list[y+1][x];
char e = list[y][x+1];
char w = list[y][x-1];
char sw= list[y+1][x-1];
char se= list[y+1][x+1];
//etc.
Просто не забудьте проверить границы, просто catch IndexOutOfRange
и продолжить цикл, чтобы избежать множества утомительной специализированной логики проверки.
Этомоя задняя часть расчетов салфеток, вы можете проверить с изображением. Также, если вы хотите диагонали, я оставлю это в качестве упражнения. Совет: используйте ту же логику с недавно созданными индексами.
Если у вас естьЗначения символов Есть множество примеров их суммирования, я полагаю, что трудной частью было нахождение смежности.