过不了样例,求助
查看原帖
过不了样例,求助
723517
Joseph__Joestar楼主2022/6/26 09:24
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN=100000;
const int  kind=26; 
struct trie{
	int next [MAXN][kind];
	 int  exist  [MAXN];
	 int cnt;
	trie(){
	    cnt=1;
		memset(next[0],0,sizeof(next[0]));
		memset(exist,0,sizeof(exist));
	}
	void insert(char*s,int l)
	  {
	  	int root=1;
	  	for(int i=1;i<=l;i++)
	  	   {
	  	  	int c=s[i]-'a';
	  	  	if(!next[root][c])
	  	  	  {
			     memset(next[root],0,sizeof(next[root]));
	  	  	     next[root][c]=++cnt;
	  	  	     root=next[root][c];
			  }
		   }
		exist[root]=1;   
	  }
	int find(char *s,int l)
	  {
	  	int root=1;
	  	for(int i=1;i<=l;i++)
	  	   {
	  		int c=s[i]-'a';
	  		if(next[root][c]==0);
	  		  return 0;
	  		root=next[root][c];
		   }
		   if(exist[root]>=2)
		     return exist[root]++;
		   if(exist[root]==1)
		    return 1;
		   else
			return 0;
	  	}  
}tree;
char s[55];
int main()
{
    int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	  {
	  	scanf("%s",s+1);
	  	tree.insert(s,strlen(s+1));
	  }
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
	      scanf("%s",s+1);
	 if(tree.find(s,strlen(s+1))==1)
        printf("OK\n");
     if(tree.find(s,strlen(s+1))>=2)
        printf("REPEAT\n");
     if(tree.find(s,strlen(s+1))==0)
  	    printf("WRONG\n");
    }
	return 0;
}

样例输出全是WRONG。求调

2022/6/26 09:24
加载中...