查找单词个数

样例:

3
9 you are a good boy ha ha o yeah
13 o my god you like bleach naruto one piece and so do i
11 but i do not think you will get all the points
5
you
i
o
all
naruto


1 2 3
2 3
1 2
3
2

 

 

#include <iostream>
#include <cstring> 
using namespace std;
const int N=5e5+100;
int tot=1,ch[N][27];
int  n,m,b[N][110];
char s[N];

 void insert(int id,char *s){
 	int u =1;
 	int l=strlen(s+1);
 	for(int i=1;i<=l;i++){
 		int c= s[i]-'a';
 		if(ch[u][c]==0) ch[u][c]=++tot;
 		
 		u=ch[u][c];
 	}
 	b[u][id]=1;
 }
 void find(char *s){
 	int u=1;
 	int flag=1;
 	int len=strlen(s+1);
 	for(int i=1;i<=len;i++){
 		int c= s[i]-'a';
 		if(ch[u][c]==0){
 			flag=0; break;
 		}
 		u=ch[u][c];
 	}
 	if(flag){
 		for(int i=1;i<=n;i++) if(b[u][i]) cout<<i<<' ';
 	}
 	cout<<endl;
 }
 
 signed main(){
 	int i,x;
 	cin>>n;
 	for(int j=1;j<=n;j++){
 		cin>>x;
 		for(i=1;i<=x;i++) cin>>s+1,insert(j,s);
 	}
 	cin>>m;
 	for(i=1;i<=m;i++) cin>>s+1, find(s);
 }

 

posted on 2023-03-08 19:49  towboat  阅读(23)  评论(0)    收藏  举报