【发布时间】:2014-05-30 23:21:32
【问题描述】:
上下文:我正在搜索二维数组(水平、垂直和对角)中包含的所有单词。
所以我要做的是获取所有可能的单词,检查它们是否在给定的字典中,以及它们是否存储在数组中。问题是,我不希望它有重复。
这是代码的sn-p:
for (i=l-1;i>=0;i--){
palavra[aux]=mat[i][caux];
for (j=i;j>=0;j--){
palavra[aux]=mat[j][caux];
palavra[aux+1]='\0';
for (it=0;encontradas[it]!=NULL;it++){
if (strcmp(palavra,encontradas[it])==0)flag=1;
else flag=0;
}
if (flag==0) {
r = palavra_existe(dic,palavra);
if (r!=0) {
found[auxenc]=mystrdup(palavra);
auxenc++;
}
}
flag=0;
aux++;
}
aux=0;
}
if (strcmp(palavra, found[it])==0)flag=1
行用于检查是否已经找到了形成的措辞,以避免创建重复。问题是它不起作用,无论如何都会出现重复项(因为标志变量永远不会取值 1)。
我会在这里遗漏什么?
【问题讨论】:
-
encontradas是如何填充的? -
它永远不会设置为 1,还是会重置为 0?在不研究周围逻辑的情况下,您不仅要在
strcmp()发出值相等的信号时将flag设置为 1,而且每次找到 not 的值时将其设置回 0相等。