【发布时间】:2020-07-27 11:14:19
【问题描述】:
这是在二维数组中搜索子字符串的东西
int left_to_rigth(char matrix[ROW][COLUNM], char str1[])
{
int i = 0, j, counting = 0, wordcnt;
int length = computeLength(str1); //returns legth of string
int index = -1;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COLUNM; j += 1)
{
if (matrix[i][j] == str1[0])
{
for (wordcnt = 0; wordcnt < length; wordcnt++)
{
if (matrix[i][j + wordcnt] == str1[wordcnt])
{
counting++;
}
}
if (counting == length)
{
index = (i *12) + j;
}
}
}
}
return index;
}
输出:
Enter the string to be searched in the puzzle:
SHOUT
position in the puzzle: 12
PUZZLE(MATRIX)
X T Z M Q Y K C E C F H -->0 1 2 3 4 5 6 7 8 9 10 11
*S H O U T* E X O E A P I -->12 13 14 ------------23
X G T L Q B E L T N F K
A I R I D Z A L L I O D
M E I E T Y S E H R T I
A W B R N E T C W O H X
N O U I R U Z T S C C T
U D T P E C J I E H R U
A L E M C S Y O N I U R
L V *K E R E M* N I P H E
E A N B U R E J O N C Y
A W I I I J N J R U Y F
D W T N T H E N P J Y T
E Q L Z D I L E M M A B
R C I T E N G A M T P C
所以该函数返回 SHOUT 的起点,即 12,但是当我尝试搜索单词 KEREM 时,它应该给我 110,但它返回 -1,表示该单词不存在。 似乎代码只搜索我输入的每个输入的前 3 行,然后返回 -1。你能帮助我是初学者吗 这只是我需要完成的第一部分,以便它在各个方向进行搜索我可以编写 4 个单独的函数并在它们不返回 -1 时调用它们,但我需要先让它工作
【问题讨论】:
-
您需要在循环内的某处重置
counting。在第 6 点(“K”)counting变为1;在第 35 点,它变为2。 -
每 pmg,在
for(wordcnt = 0;...)之前插入counting = 0; -
天哪,这是错误的 :(((((((((((()) 非常感谢,所以如果我想让它从右到左搜索,我只需要更改 ` if ( matrix[i][j + wordcnt] == str1[wordcnt]) ` to ` if (matrix[i][j - wordcnt] == str1[wordcnt])` 我是对的吗@CraigEstey @pmg