求助 字典树WA
查看原帖
求助 字典树WA
929763
Pianmu楼主2023/10/17 19:45
# include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
char s[60];
int nex[maxn][30],cnt=0;
int exist[maxn];
int n,m;
void insert(int l)
{
	int p=0;
	for (int i=1;i<=l;i++)
	{
		int c=s[i]-'a';
		if (!nex[p][c]) nex[p][c]=++cnt;
		p=nex[p][c];
	}
	exist[p]=1;
}
int find(int l)
{
	int p=0;
	for (int i=1;i<=l;i++)
	{
		int c=s[i]-'a';
		if (!nex[p][c]) return 0;
		p=nex[p][c];
	}
	return p;
}
int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	{
		scanf("%s",s+1);
		insert(strlen(s+1));
	}
	scanf("%d",&m); 
	for (int i=1;i<=m;i++)
	{
		scanf("%s",s+1);
		int tmp=find(strlen(s+1));
		if (exist[tmp]==114)
		{
			printf("REAPEAT\n");	
		}
		if (exist[tmp]==0) printf("WRONG\n");
		else
		{
			if (exist[tmp]==1)
			{
				printf("OK\n");
				exist[tmp]=114;
			}
		}
	} 
	return 0;
}

洛谷在线IDE可以跑出正确结果,提交后WA,求助大佬。

2023/10/17 19:45
加载中...