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

输入写错了 贡献了N个RE。。。

Posted by ACM_henry at 2008-11-01 21:00:06 on Problem 2564
In Reply To:为什么RE 跪求指点 RE的不行了 Posted by:ACM_henry at 2008-11-01 12:53:22
> #include <iostream>
> using namespace std;
> char p[25005][30];
> int path[25005];
> int aim;
> struct node
> {
> 	int count;//字符串长度
> 	int index;
> 	node *ptr[26];
> 	node()
> 	{
> 		index=-1;
> 		count=0;
> 		for(int i=0;i<26;i++)
> 			ptr[i]=NULL;
> 	};
> }root;
> void insert(char *s)
> {
> 	int i, len=strlen(s);
> 	node* p=&root;
> 	for(i=0;i<len;i++)
> 	{
> 		if(p->ptr[s[i]-'a']==NULL)
> 		{
> 			p->ptr[s[i]-'a']=new node();
> 		}
> 		p=p->ptr[s[i]-'a'];	
> 	}
> 	p->count=len;
> 	p->index=aim;
> }
> int find(char *s)
> {
> 	int i,len=strlen(s);
> 	node *p=&root;
> 	for(i=0;i<len;i++)
> 	{
> 		if(p->ptr[s[i]-'a']==NULL)
> 		{
> 			return -1;
> 		}
> 		p=p->ptr[s[i]-'a'];
> 	}
> 	if(p->count==len)
> 	return p->index;
> 	else return -1;
> }
> void change(int x)
> {
> 	int len=strlen(p[x]);
> 	int i,j;
> 	char z;
> 	int vv;
> 	char temp[30];
> 	for(j=0;j<len;j++)
> 	{
> 		temp[j]=p[x][j];
> 	}
> 	temp[len]='\0';
> 	for(i=0;i<len;i++)
> 	{
> 		for(z='a';z<='z';z++)
> 		{	
> 			if(z==p[x][i])
> 			{
> 				continue;
> 			}
> 			temp[i]=z;	
> 		if(strcmp(p[x],temp)>0)
> 		{
> 			continue;
> 		}
> 		vv=find(temp);
> 		if(vv>=0)
> 		{
> 		if(path[vv]<path[x]+1)
> 		{
> 			path[vv]=path[x]+1;
> 		}
> 		}
> 		}
> 		temp[i]=p[x][i];
> 	}
> }
> void deletes(int x)
> {
> 	int vv;
> 	char temp[30];
> 	int i,j,k;
> 	int len=strlen(p[x]);
> 	if(len==1)
> 	{
> 		return;
> 	}
> 	for(i=0;i<len;i++)
> 	{
> 		k=0;
> 		for(j=0;j<len;j++)
> 		{
> 			if(j==i)
> 			{
> 				continue;
> 			}
> 			temp[k++]=p[x][j];
> 		}
> 		temp[k]='\0';
> 		if(strcmp(p[x],temp)>0)
> 		{
> 			continue;
> 		}
> 		vv=find(temp);
> 		if(vv>=0)
> 		{
> 		if(path[vv]<path[x]+1)
> 		{
> 			path[vv]=path[x]+1;
> 		}
> 		}
> 	}
> }
> void add(int x)
> {
> 	int vv;
> 	int len=strlen(p[x]);
> 	int i;
> 	char z;
> 	char temp[30];
> 	int k;
> 	for(i=0;i<=len;i++)
> 	{
> 		for(z='a';z<='z';z++)
> 		{
> 			for(k=0;k<i;k++)
> 			{
> 				temp[k]=p[x][k];
> 			}
> 			temp[i]=z;
> 			for(k=i+1;k<=len;k++)
> 			{
> 				temp[k]=p[x][k-1];
> 			}
> 			temp[len+1]='\0';
> 			if(strcmp(p[x],temp)>0)
> 			{
> 				continue;
> 			}
> 			vv=find(temp);
> 			if(vv>=0)
> 			{
> 				if(path[vv]<path[x]+1)
> 				{
> 					path[vv]=path[x]+1;
> 				}
> 			}
> 		}
> 	}
> }
> int main()
> {
> 
> 	int i,sum;
> 	i=0;
> 	aim=0;
> 	while(scanf("%s",p[i])!=NULL&&p[i][0]!='.')
> 	{
> 		insert(p[i]);
> 		aim++;
> 		i++;
> 	}
> 	sum=i;
> 	for(i=0;i<sum;i++)
> 	{
> 		path[i]=1;
> 	}
> 	for(i=0;i<sum;i++)
> 	{
> 		add(i);
> 		deletes(i);
> 		change(i);
> 	}
> 	int maxs=0;
> 	for(i=0;i<sum;i++)
> 	{
> 		if(path[i]>maxs)
> 		{
> 			maxs=path[i];
> 		}
> 	}
> 	printf("%d\n",maxs);
> 	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