搜索
您的当前位置:首页正文

洛谷刷题笔记---P3370哈希

来源:哗拓教育

 C++98

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
    set<string> num;
    int rtime = 0;
    cin>>rtime;
    while(rtime--)
    {
        string temp;
        cin>>temp;
        num.insert(temp);
    }
    cout<<num.size()<<endl;
    return 0;
}

C++98思路:

用STL中的set(集合)容器将每个字符串插入进去后,输出set的size()即可。

set的特性就是set容器里面的元素都是独一无二的,set不能插入一样的元素。

C

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
long long cmp(const void*a, const void*b)
{
    return (*(long long*)a-*(long long*)b);
}

int main()
{
	long long time = 0;
	long long count = 1;
	scanf("%lld",&time);
	long long hashcode[11000] ={0};
	long long index = 0;
	while(time--)
	{
		char str[1600] = " ";
		scanf("%s",str);
		long long lenth = strlen(str);
		long long i = 0;
		for(;i<lenth;i++)
		{
			hashcode[index]+=((long long)str[i]);
			hashcode[index]*=10;
			hashcode[index] = hashcode[index]%122222221;
        // 哈希部分
		}
		index++;
	}
	qsort(hashcode,index,sizeof(long long),cmp);
	long long k = 0;
	for(k=1;k<index;k++)
	if(hashcode[k]!=hashcode[k-1])
	count++;
    printf("%lld",count);
	return 0;
}

C思路:

不存在完美的哈希函数!只尽可能包容所以情况!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top