题解 | #单词查找树#

单词查找树

https://ac.nowcoder.com/acm/problem/16864

就是很普通的一个trie树,但是其中有一个新的知识点,所以记一下 其中son[][]表示trie树,p是移动时用到的点


using namespace std;

const int N=100010;
int son[N][26]; 
int idx,p,cnt[N]; 

void add(char *str)
{
	int p=0;//加入一个新的单词时从根节点出发
	for(int i=0;str[i];i++)
	{
		int u=str[i]-'A';
		if(!son[p][u])//如果这个字母没有出现过,就要让它计入
		{
			son[p][u]=++idx;
			p=son[p][u];
		}
		else
		{
			p=son[p][u];
		}
	}
	cnt[p]++;//这个可以没有,是用来统计单词数的
}

int main()
{
	char a[63];
	while(scanf("%s",a)!=EOF)//这种情况下输入“Ctrl+z”就会退出
	{
		add(a);
	}
	cout<<idx+1;
	return 0;
}

全部评论

相关推荐

07-11 11:10
门头沟学院 Java
请问各位大三兄弟们跟hr说多久实习时间到时候可以提前跑路吗?
程序员小白条:问就是六个月以上,可以一年,实习都这样,你入职后想跑就跑
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务