2013-11-06 3 views
0

Я создал матрицу 11 X 11, где могут быть введены символы кроссворда. Секции, где буквы не нужны, заполняются пробелом. Я пытаюсь взять матрицу и найти все слова в ней как горизонтальные, так и вертикальные, а затем сохранить их в массиве. Любая помощь будет высоко оценена, поскольку я довольно новичок в программировании в Java! Спасибо!Как взять слова из матрицы символов и пробелов и поместить их в массив строк?

+0

Не могли бы вы уточнить/изменить этот вопрос? Я вижу, что в конце вы используете java. Возможно, разместите некоторый код того, что у вас есть с комментарием в коде, где вы хотите сделать что-то еще. Что вы подразумеваете под «найти все слова в нем?» Вы имеете в виду проверку против словаря, чтобы убедиться, что входные буквы действительно слова? Или вы имеете в виду проверить, что они верны, учитывая известный набор ответов? И т.п. – jcb

ответ

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; 
} 

}