RE求助
查看原帖
RE求助
301456
宇默昀离楼主2021/7/16 09:41
#include<bits/stdc++.h>
#define N 500010
using namespace std;
struct trie
{
	int nxt[N][26],exist[N],cnt;
	void insert(char* c)
	{
		int len=strlen(c);
		int p=0;
		for(int i=0;i<len;i++)
		{
			int s=c[i]-'a';
			if(nxt[p][s]) p=nxt[p][s];
			else
			{
				nxt[p][s]=++cnt;
				p=nxt[p][s];
			}
		}
		exist[p]++;
	}
	int search(char* c)
	{
		int p=0;
		int len=strlen(c);
		for(int i=0;i<len;i++)
		{
			int s=c[i]-'a';
			if(!nxt[p][s]) return 0;
			p=nxt[p][s];
		}
		if(exist[p]==1)
		{
			exist[p]=2;
			return 1;
		}
		if(exist[p]==2)
		{
			return 2;
		}
	}
};

char str[100];

int main()
{
	int n;
	trie t;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>str;
		t.insert(str);
	}
	int m;
	cin>>m;
	for(int i=0;i<m;i++)
	{
		cin>>str;
		switch(t.search(str))
		{
			case 0:
				cout<<"WRONG"<<endl;
				break;
			case 1:
				cout<<"OK"<<endl;
				break;
			case 2:
				cout<<"REPEAT"<<endl;
				break;
		}
	}
	return 0;
}

RE求助,本地样例正确,在本地测试题目数据会提示"...已停止工作"

2021/7/16 09:41
加载中...