Я создал матрицу 11 X 11, где могут быть введены символы кроссворда. Секции, где буквы не нужны, заполняются пробелом. Я пытаюсь взять матрицу и найти все слова в ней как горизонтальные, так и вертикальные, а затем сохранить их в массиве. Любая помощь будет высоко оценена, поскольку я довольно новичок в программировании в Java! Спасибо!Как взять слова из матрицы символов и пробелов и поместить их в массив строк?
0
A
ответ
0
Вот рабочий пример в «C», переводя Java должен быть прямой
Логика точно так же.
#include <stdio.h>
void matrixwords(char matrix[11][11])
{
int i = 0;
int j = 0;
int k = 0;
char str[12];
/* process each row i using column j */
k = 0;
for (i = 0; i < 11; i++) {
for (j = 0; j < 11; ++j) {
char c = matrix[i][j];
if (c != ' ') {
str[k++] = c;
} else {
/* found a word in the row */
if (k != 0) {
str[k] = '\0'; /* terminate word */
printf("found a row word %s\n", str);
k = 0;
}
}
}
/* don't forget last word in row */
if (k != 0) {
str[k] = '\0'; /* terminate word */
printf("found a row word %s\n", str);
k = 0;
}
}
/* process each column j using row i*/
k = 0;
for (j = 0; j < 11; i++) {
for (i = 0; i < 11; ++j) {
char c = matrix[i][j];
if (c != ' ') {
str[k++] = c;
} else {
/* found a word in the row */
if (k != 0) {
str[k] = '\0'; /* terminate word */
printf("found a column word %s\n", str);
k = 0;
}
}
}
/* don't forget last word in column */
if (k != 0) {
str[k] = '\0'; /* terminate word */
printf("found a column word %s\n", str);
}
k = 0;
}
}
Не могли бы вы уточнить/изменить этот вопрос? Я вижу, что в конце вы используете java. Возможно, разместите некоторый код того, что у вас есть с комментарием в коде, где вы хотите сделать что-то еще. Что вы подразумеваете под «найти все слова в нем?» Вы имеете в виду проверку против словаря, чтобы убедиться, что входные буквы действительно слова? Или вы имеете в виду проверить, что они верны, учитывая известный набор ответов? И т.п. – jcb