-1

谁能帮我组织这样的功能(作为我用填字游戏管理的作业):

1)我有字符串数组(一种文本文件),其中

row[0] = "str1" row[1] = "str2"等等。

2)每个字符串的长度相同

3)从标准输入输入的单词,如abcd

我需要在对角abcd位置的文本中找到单词(从左到右并不重要,只需要一种算法)并将找到的单词替换为零。可以找到第一个字母,但是如何正确地前进并用零替换文本?谁能给我任何线索?strchr

解决方案:

顺便说一句,Tnx 用于减去。我找到了另一种解决方案,其中每条对角线都生成为 1 条简单线,然后我将strstr其应用于查找匹配位置。知道匹配的位置和匹配字符串的长度可以精确地检测匹配单元格在行数组中的位置。

我使用了这样的代码(也许 smn 会发现它很有用):

  /* generating left-right diagonal string str */
  for( col = cols - len; col >= 0; col --, i = 0 ){
  /* where len is the length of searching string */

  while( ( col+i ) < cols && i < rows ){
    *(str + i) = res[i][col+i];
    i ++;
  }

  *(str + i) = '\0';

  //some match seq.
  }

我从左上单元格(第一个字符串的开头)到最后一个顶部单元格(第一个字符串的结尾)做了左右对角线。然后对左列进行相同的程序,因此结果算法将覆盖所有字符串。

4

2 回答 2

2

您可能想要一个二维字符数组,例如

char grid[i][j]

如果你的第一个字母在grid[i][j]比对角线的下一个点在

grid[i+1][j+1]

依此类推,对于+1和的每个组合-1

于 2012-11-21T18:47:42.763 回答
1

找到第一个字母,让我们在 row[5] 处说索引为 7 的字母(so row[5][7])。然后检查是否row[6][8]是第二个字母;或row[4][6]或 或row[4][8]row[6][6]。继续第三个字母,可能是递归的。

于 2012-11-21T18:48:09.200 回答