Fuxh_18 @ 2024-07-24 09:49:10
这是我第一次 AC 的代码,我没有给 cnt,idx清空,trie 还清空错了,却 AC 了。后来帮同学看代码时才发现(有点小丑)。
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+1;
int n,m;
char s[N];
int cnt[N],trie[N][125],idx=1;
void insert(char *s){
int p=1,len=strlen(s+1);
for(int i=1;i<=len;i++){
int x=(int)s[i];
if(!trie[p][x]){
trie[p][x]=++idx;
}
p=trie[p][x];
cnt[p]++;
}
}
int find(char *s){
int p=1,len=strlen(s+1);
for(int i=1;i<=len;i++){
int x=(int)s[i];
if(!trie[p][x]){
return 0;
}
p=trie[p][x];
}
return cnt[p];
}
void init(){
for(int i=1;i<=n;i++){
for(int j=1;j<=125;j++){
trie[i][j]=0;
}
}
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
init();
for(int i=1;i<=n;i++){
cin>>s+1;
insert(s);
}
for(int i=1;i<=m;i++){
cin>>s+1;
cout<<find(s)<<endl;
}
}
return 0;
}
by shiziyu111 @ 2024-07-24 19:16:44
@Fuxh_18 qp
by wfirstzhang @ 2024-08-07 14:49:18
其实这就相当于以