题目地址http://poj.grids.cn/practice/1035下面是我的代码,帮忙看看那里错了,自己电脑里运行,试了好多组,每次都很成功额,可在线判断一直WrongAnswer,实在是百思不得其解。小弟QQ670607361#include stdio.h
#include string.h
char dic[10000][16];
char words[50][16];
char wordsCopy[17];
char dicCopy[17];
int i, j, m, n, noDic, noWord, len;
char c;
int IsMatch(char *);
void IsLack();
void IsExcess();
void IsWrongWritten();
int main(void)
{
for (i = 0; ; i++)
{
gets(dic);
if (strcmp(dic, #) == 0)
{
noDic = i;
break;
}
}
for (i = 0; ; i++)
{
gets(words);
if (strcmp(words, #) == 0)
{
noWord = i;
break;
}
}
for (i = 0; inoWord; i++)
{
printf(%s, words);
if (IsMatch(words))
{
printf( is correct\n);
continue;
}
else printf(:);
len = (int)strlen(words);
IsWrongWritten();
IsLack();
IsExcess();
printf(\n);
}
return 0;
}
int IsMatch(char *a)
{
for (j = 0; jnoDic; j++)
if (strcmp(dic[j], a) == 0)return 1;
return 0;
}
void IsLack()
{
for (j = 0; jnoDic; j++)
{
if (dic[j][len+1] != '\0') continue;
for (m = 0; m = len; m++)
{
for (n = 0; n = len; n++)
{
if (n = m)
dicCopy[n] = dic[j][n+1];
else
dicCopy[n] = dic[j][n];
}
if (strcmp(words, dicCopy) == 0)
{
printf( %s, dic[j]);
break;
}
memset(dicCopy, 0, 17);
}
}
}
void IsExcess()
{
for (m = 0; m = len; m++)
{
if (words[m] == words[m+1])continue;
for (n = 0; n = len; n++)
{
if (n = m)
wordsCopy[n] = words[n+1];
else
wordsCopy[n] = words[n];
}
if (IsMatch(wordsCopy))
printf( %s, wordsCopy);
}
memset(wordsCopy, 0, 17);
}
void IsWrongWritten()
{
for (m = 0; mlen; m++)
{
strcpy(wordsCopy,words);
for (c = 'a'; c = 'z'; c++)
{
wordsCopy[m] = c;
if (IsMatch(wordsCopy))
printf( %s, wordsCopy);
}
memset(wordsCopy, 0, 17);
}
}
|