求助,全部WA,谢谢大佬
查看原帖
求助,全部WA,谢谢大佬
355521
rainbow_star楼主2021/7/25 16:50
#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int n,l,m;
bool yes;
char s[21];
int trie_son[500010][26];
bool trie_flag[500010][110];
int main()
{
	scanf("%d",&n);
	int i,j,k,now,len;
	len=0;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&l);
		for(j=1;j<=l;j++)
		{
			now=0;
			scanf("%s",s);
			for(k=0;k<strlen(s);k++)
			{
				if(trie_son[now][s[k]-'a']==0) 
				{
					len++;
					trie_son[now][s[k]-'a']=len;
				}
				now=trie_son[now][s[k]-'a'];
				if(k==strlen(s)-1)	
					trie_flag[now][i]=true;
				else
					trie_flag[now][i]=false;
			}
		}
	}
	scanf("%d",&m);
	for(i=1;i<=m;i++)
	{
		scanf("%s",s);
		now=0;
		for(j=0;j<strlen(s);j++)
		{
			if(trie_son[now][s[j]-'a']==0) 
			{ 
				printf("\n");//不存在 
				break;
			}
			now=trie_son[now][s[j]-'a'];
			if(j==strlen(s)-1)	
			{
				for(k=1;k<=n;k++)
				{
					if(trie_flag[now][k]==true)
						printf("%d ",k);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
2021/7/25 16:50
加载中...