哈希 poj 3349
n个雪花
判断有没有相同的
正的和倒的相同都可以
哈希一下 比的少了就可以
1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 6 using namespace std; 7 8 #define MAXN 15010 9 #define mod 14997 10 int cnt[MAXN]; 11 struct node 12 { 13 int s[7]; 14 15 }x[MAXN][100]; 16 17 bool jud(node a,int pos,int num) 18 { 19 int i,j; 20 for(i=0;i<6;i++) 21 { 22 for(j=0;j<6;j++) //正的 23 if(a.s[j]!=x[pos][num].s[(i+j)%6]) 24 break; 25 if(j==6) 26 return true; 27 for(j=0;j<6;j++) //倒的 28 if(a.s[j]!=x[pos][num].s[(i-j+6)%6]) 29 break; 30 if(j==6) 31 return true; 32 } 33 return false; 34 } 35 int main() 36 { 37 int n; 38 scanf("%d",&n); 39 node a; 40 memset(cnt,0,sizeof(cnt)); 41 42 for(int i=1;i<=n;i++) 43 { 44 int sum=0; 45 for(int j=0;j<6;j++) 46 { 47 scanf("%d",&a.s[j]); 48 sum=sum+a.s[j]; 49 } 50 int pos=sum%mod; 51 for(int j=0;j<cnt[pos];j++) 52 { 53 if(jud(a,pos,j)) 54 { 55 printf("Twin snowflakes found.\n"); 56 return 0; 57 } 58 } 59 x[pos][cnt[pos]]=a; 60 cnt[pos]++; 61 } 62 printf("No two snowflakes are alike.\n"); 63 return 0; 64 }
posted on 2016-11-24 14:51 HelloWorld!--By-MJY 阅读(139) 评论(0) 编辑 收藏 举报