求助trie树
  • 板块UVA11362 Phone List
  • 楼主lhrfc
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/3/11 15:14
  • 上次更新2023/10/23 21:55:21
查看原帖
求助trie树
940678
lhrfc楼主2023/3/11 15:14
#include <bits/stdc++.h>
using namespace std;
class node{
public:
	int son[10];
	bool isword;
	void clear(){
		memset(son,-1,sizeof son);
		isword=false;		
	}
	node(){clear();}	
};
node trie[10010];
int tot=1;
void clear(){
	for(int i=0;i<=10001;i++) trie[i].clear();
}
bool insert(char c[101]){
	bool bl=true;
	int l=strlen(c);
	int now=0;
	for(int i=0;i<l;i++){
		if(trie[now].isword) bl=false; 
		if(trie[now].son[c[i]-'0']==-1){
			trie[now].son[c[i]-'0']=tot;
			now=tot++;
		}
		else now=trie[now].son[c[i]-'0'];
	}
	trie[now].isword=true;
	return bl;
}
int main(){
	int t,n;
	cin>>t;
	while(t--){
		clear();
		cin>>n;
		bool bl=true;
		while(n--){
			char c[101];
			cin>>c;
			if(!insert(c)) bl=false;
		}
		if(!bl) cout<<"NO\n";
		else cout<<"YES\n";
	}
}

第一次学trie数,一直re

2023/3/11 15:14
加载中...