有点问题...
查看原帖
有点问题...
826520
manyc楼主2023/5/21 19:37

不知道哪错了

#include<bits/stdc++.h>
using namespace std;
const int N=3000005;
int tr[N][65],cnt[N],idx;
int va(char x){
	if(x>='a'&&x<='z') return x-'a';
	if(x>='A'&&x<='Z') return x-'A'+26;
	return x-'0'+52;
}
void insr(string s){
	int u=0;
	for(int i=0;s[i];i++){
		int x=va(s[i]);
		if(!tr[u][x]) tr[u][x]=++idx;
		u=tr[u][x];
		cnt[u]++;
	}
}
int qur(string s){
	int u=0;
	for(int i=0;s[i];i++){
		int x=va(s[i]);
		if(!tr[u][x]) return 0;
		u=tr[u][x];
	}
	return cnt[u]++;
}
int main(){
	int t;
	cin>>t;
	while(t--){
		int n,m;
		cin>>n>>m;
		for(int i=0;i<=idx;i++){
			cnt[i]=0;
			for(int j=0;j<62;j++) tr[i][j]=0;
		}
		idx=0;
		for(int i=1;i<=n;i++){
			string s;
			cin>>s;
			insr(s);
		}
		while(m--){
			string s;
			cin>>s;
			cout<<qur(s)<<endl;
		}
	}
	return 0;
}
2023/5/21 19:37
加载中...