十分求调
查看原帖
十分求调
890151
zuozedi楼主2024/7/25 11:03
using namespace std;
#define itn int
#define ll long long
//#define int long long
const int N = 10005;
int n, m;
char name[N][55]; 
int ch[N * 55][26];
int root = 1, cnt = 1;
bool isname[N * 55], visit[N * 55];
void build(char *s)
{
	int len = strlen(s);
	int x = 1, u;
	for(int i = 0; i < len; i++)
	{
		u = s[i] - 'a';
		if(ch[x][u])
		{
			x = ch[x][u];
		}
		else
		{
			ch[x][u] = cnt++;
			x = cnt;
		}
	}
	isname[x] = 1;
}
int query(char *s)
{
	int len = strlen(s);
	int x = 1, u;
	for(int i = 0; i < len; i++)
	{
		u = s[i] - 'a';
		if(ch[x][u] == 0)
		{
			return 2;
		}
		else
		{
			x = ch[x][u];
		}
	}
	if(isname[x])
	{
		if(visit[x])
		{
			return 1;
		}
		else
		{
			visit[x] = 1;
			return 0;
		}
	}
	else
	{
		return 2;
	}
}
signed main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> name[i];
		build(name[i]);
	}
	cin >> m;
	char s[55];
	while(m--)
	{
		cin >> s;
		int ans = query(s);
		if(ans == 0)
		{
			puts("OK");
		}
		else if(ans == 1)
		{
			puts("REPEAT");
		}
		else
		{
			puts("WRONG");
		}
	}
	return 0;
}
2024/7/25 11:03
加载中...