Tag: 哈希


题目:http://poj.org/problem?id=3349题意:输入n个含6个整数的数组,判断这些数组是否有相同的。相同的条件为:正向或者反向相应顺序相同,如1 2 3 4 5 6 与 4 3 2 1 6 5就是相同的。解法:哈希表。今天上午重新看了眼哈希表各种性质的证明,感觉有所启发,就决定找到哈希的题写写看。哈希的h函数为6个数之和。首先判断输入各组的输入之和是否有相同的,如果有相同的,则具体分情况判断。哈希表解决冲突的方法为拉链。本来想模拟个链表,但发现,这样反而超时,于是决定直接给每个槽100个单元,因为每个key相同的元素个数的期望为不到10个,因而决定碰运气,希望不出现最坏情况。结果AC了。代码: #include<stdio.h>#include<stdlib.h>struct Node{ int flag; int len; int next[100][6];};Node t[15000];int compare(int a[],int b[]){ int i,j; for(i=0;i<6;i++) { for(j=0;j<6;j++) { if(a[(i+j)%6]!=b[j%6]) break; } if(j==6) return 1; for(j=0;j<6;j++) { if(a[(i+j)%6]!=b[5-j]) break; } if(j==6) return 1; } return 0;}int main(){ int ll,flag,sum,n,i,j,k,temp[6]; scanf(“%d”,&n); flag=0; for(i=0;i<14999;i++) { […]

CodePhoto.WTF © 2025