poj 3349 Snowflake Snow Snowflakes

来源:互联网 发布:多元非线性拟合算法 编辑:程序博客网 时间:2024/05/08 03:06

继续hash。

我们以前做过这样的题目:给你n个整数,n<=10000,整数的值也在0与10000(较小)之间。我们肯定应用直接映射,整数的值作为内存的编号(说法相当大众),对于输入的整数i,a[i]++,这样就完成了统计。如果整数是分散的但是范围很大,假如还是有n个整数,n<=10000,但是整数的值却在0与100000000(较大)之间,直接映射显然会超内存。

这时候我们可以用hash,针对上述问题,用取模hash函数。我一直觉得,hash函数映射的是标记,更通俗一点,就是下标。我们定义一个结构来存储输入的整数值和其出现的次数。我们通过整数值的取模来决定该整数值所在的结构体应该映射到哪里。通过上一句话的思想,我们可以做poj3349了,我们定义了一个结构体来存储数组,通过数组的总和取模来决定该数组所在的结构体应该映射到哪里。这样,我们把所有的数组分组了,这样就不用盲目的去比较了,只要在所属的组里比较就可以了。