2012-11-21 41 views
-1

谁能帮助我组织这样的功能(如一门功课我字谜程序管理):Ç查找字符串斜

1)我有一个字符串(一种文本文件)的阵列,其中

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

2)每个串的长度是相同

3)输入从stdin像abcd

我需要找到文字abcd位于对角线(从左到右并不重要,只需要一种算法),并用零替换找到的词。 第一个字母可以在strchr找到,但如何正确前进并用零代替文本?任何人都可以给我任何线索吗?

SOLUTION:

Tnx用于扼杀的方式。我发现了另一种解决方案,每条对角线都生成一条简单的线条,然后我应用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

人们通常不喜欢被要求为你做功课。 –

+0

这是一个完整的填字游戏(即:在一个正方形/矩形网格内没有不允许的单元格)?我做了一些类似的事情,我写了一组简单的“is4Neighbour/is4DiagNeighbor/is8Neighbour”函数来确定一个单元是否有邻居。然后,我递归创建一个所有对角线的列表,将它们转换为一维数组,然后在它们上调用strstr()函数。 – DevNull

+0

这是作业的一小部分,我不知道如何快速做到这一点,因为填字游戏可能很大,我不想为我做这件事,但要知道如何正确地做到这一点。仔细读 – NGix

回答

2

你可能希望有字符的2 dimentonal阵列如

​​

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

grid[i+1][j+1] 

而且所以对于每个组合+1-1

1

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