任何人都可以帮我组织这样的功能(作为我用填字游戏程序管理的家庭作业):
1)我有字符串数组(文本文件的种类),其中
row[0] = "str1"
row[1] = "str2"
等等。
2)每个字符串的长度相同
3)来自stdin的输入单词,如abcd
我需要在位于对角线的文本中找到单词abcd
(从左到右并不重要,只需要一种算法)并用零替换找到的单词。
可以在strchr
找到第一个字母但是如何正确前进并用零替换文本?任何人都可以给我任何线索吗?
解决方案:
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.
}
我从左上角的单元格(第一个字符串的开头)到最后一个顶部单元格(第一个字符串的结尾)左右对角线。然后左栏的程序相同,因此算法将涵盖所有字符串。
答案 0 :(得分:2)
你可能想要一个2-dimentonal数组的字符,如
char grid[i][j]
如果你的第一个字母在grid[i][j]
而不是对角线的下一个点是
grid[i+1][j+1]
等+1
和-1
答案 1 :(得分:1)
找到第一个字母,让我们在第[5]行写下索引为7的字母(所以row[5][7]
)。
然后检查row[6][8]
是否是第二个字母;或row[4][6]
,或row[4][8]
或row[6][6]
。继续第三个字母,可能是recursevily。