What Are You Talking About HDU - 1075

Miku

字典树部分非常好解决,只要把最后每个单词结尾处记录下翻译成了啥

但是输出很麻烦,要处理空格,回车,换行和标点符号

不过有string在,还行

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<istream>
using namespace std;
int n;
string s;
struct t{
	int ne[28];
	int cnt;
}tr[400001];
int p;
int l;
int x;
int po;
void add(){
	//cout<<s<<" "<<l<<endl;
	p=0;
	for(int i=0;i<l;++i){
		x=s[i]-'a'+1;//这么干就不会有0了 
		if(!tr[p].ne[x]){//没有就建 
			po++;
			tr[p].ne[x]=po;		
		}
		p=tr[p].ne[x];
		tr[p].cnt++;//被经过次数即为前缀数 
	}
	return ;
}
int query(){
	p=0;
	for(int i=0;i<l;++i){
		x=s[i]-'a'+1;
		if(!tr[p].ne[x]){ 
			return 0;
		}else{
			p=tr[p].ne[x];
		}
	}
	return tr[p].cnt;
}

int main(){
	while(getline(cin,s)){
		l=s.length();
		if(l==0)
		break;
		add();
	}	
	while(getline(cin,s)){
		l=s.length();
		cout<<query()<<endl;;
	}
	return 0;
}

posted @   Simex  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示