P3370 【模板】字符串哈希

此生再无相见时 提交于 2019-12-02 22:38:48

 

题目地址


注意点:

  • map直接用[]访问即可.

#include<cstdio>
#include<iostream>
#include<map>
#define ul unsigned long long
using namespace std;
const int MAXN=4000;
map<ul,bool> has_;

ul base=101;
ul hashs[MAXN];
ul tmp[MAXN];
ul getHash(string str){
	ul hash_=0;
	for(int i=1;i<=str.length();i++){
		hashs[i]=hashs[i-1]*base+str[i-1];
	}
	hash_=hashs[str.length()];
	return hash_;
}
int main(){
	int n;
	scanf("%d",&n);
	int cnt=0;
	for(int i=1;i<=n;i++){
		string tmp;
		cin>>tmp;
		ul nowHash=getHash(tmp);
		if(has_[nowHash])continue;
		has_[nowHash]=1;
		cnt++;
	}
	printf("%d\n",cnt);
	return 0;
} 

  


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!