Trie树求助
查看原帖
Trie树求助
372219
PeyNiKge楼主2021/12/4 19:47
#include<stdio.h>
#include<string.h>
using namespace std;
int n,m;
char a[100],b[100];
int len,rt,cnt,k;
int tr[10010][100],bj[10010];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%s",a);
		len=strlen(a);
		rt=0;
		for(int j=0;j<len;j++){
			if(tr[rt][a[j]-'a'+1]==0){
				cnt++;
				tr[rt][a[j]-'a'+1]=cnt;
			}
			rt=tr[rt][a[j]-'a'+1];
		}
		bj[rt]=1;
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%s",b);
		len=strlen(b);
		k=0;
		rt=0;
		for(int j=0;j<len;j++){
			if(tr[rt][a[j]-'a'+1]==0){
				k=1;
				break;
			}
			rt=tr[rt][a[j]-'a'+1];
		}
		if(bj[rt]==0){
			k=1;
		}
		else if(bj[rt]==-1){
			k=2;
		}
		if(k==0){
			bj[rt]=-1;
			printf("OK\n");
		}
		else if(k==1){
			printf("WRONG\n");
		}
		else if(k==2){
			printf("REPEAT\n");
		}
	}
	return 0;
}
2021/12/4 19:47
加载中...