Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

参考写的代码,感觉比较容易理解

Posted by beet at 2013-05-13 22:12:27
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>

char dic[10001][16];//字典中的单词
char word[51][16];  //需要检查的单词

int  DicNum=0;
int  WordNum=0;

int Delete(char *word,char *dic)
{
	int dif=0;
	while (*word)
	{
		if (*word!=*dic)
		{
			word++;
			dif++;
			if (dif>1)
			   return 0;
		}
		else
		{
			word++;
			dic++;
		}
	}
	return 1;
}

int Change(char *word,char *dic)
{
	int dif=0;
	while (*word)
	{
		if (*(word++) != *(dic++))
		{
			dif++;
			if (dif>1)
				return 0;
		}
	}
	return 1;
}

int Insert(char *word,char *dic)
{
	int dif=0;
	while (*dic)
	{
		if (*dic!=*word)
		{
			dic++;
			dif++;
			if (dif>1)
				return 0;
		}
		else
		{
			word++;
			dic++;
		}
	}
	return 1;
}

int main()
{
	int i,j,k,wflag[10001];
	while (scanf("%s",dic[DicNum])&&dic[DicNum][0]!='#')
		DicNum++;
	while (scanf("%s",word[WordNum])&&word[WordNum][0]!='#')
		WordNum++;

	for (i=0;i<WordNum;i++)
	{
		//记录通过变换得到字典单词的下标
		int pa=0,flag=0;
		int len=strlen(word[i]),diclen;
		for (k=0;k<DicNum;k++)//对于每一个单词遍历字典
		{
			diclen=strlen(dic[k]);
			if (diclen==len)
			{
				if (!strcmp(word[i],dic[k]))
				{	//equal
					flag=1;
					break;
				}
				else if (Change(word[i],dic[k]))
					wflag[++pa]=k;
			}
			
			else if (diclen-len==1)
			{
				if(Insert(word[i],dic[k]))
					wflag[++pa]=k;
			}
			else if (len-diclen==1)
			{
				if (Delete(word[i],dic[k]))
					wflag[++pa]=k;
			}
		}
		if(flag)
			printf("%s is correct\n",word[i]);
		else
		{
			printf("%s: ",word[i]);
			for (j=1;j<=pa;j++)
				printf("%s ",dic[wflag[j]]);
			printf("\n");
			
		}
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator