请求数据加强
查看原帖
请求数据加强
627732
Fuxh_18楼主2024/7/24 09:49

这是我第一次 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;
}
2024/7/24 09:49
加载中...