poj3349 哈希
2013-12-23 14:49
274 查看
这题目写了一上午,一直错,然后自己测试数据还都对。为什么呢,为什么呢,后来我才发现代码里有一行free(tmp)。。。在55行那里。。。
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #include <math.h> #define mod 999983 using namespace std; struct node{ int num[6]; node *next; }p[mod]; int sign[mod]; int cmp_1(node *a,node *b,int pos){ int i,j=pos; for(i=0;i<6;++i){ if(a->num[i]!=b->num[j]) return 0; j=(j+1)%6; } return 1; } int cmp_2(node *a,node *b,int pos){ int i,j=pos; for(i=0;i<6;++i){ if(a->num[i]!=b->num[j]) return 0; j=(j-1+6)%6; } return 1; } int cmp(node *a,node *b){ int i,j; for(i=0;i<6;++i){ if(cmp_1(a,b,i)==1||cmp_2(a,b,i)==1) return 1; } return 0; } int main(){ node *tmp; node *op; int key; int success; tmp=(node *)malloc(sizeof(node)); int i,j,n,cnt; while(~scanf("%d",&n)){ memset(sign,0,sizeof(sign)); success=0; for(i=0;i<mod;++i){ p[i].next=NULL; for(j=0;j<6;++j) p[i].num[j]=0; } for(cnt=0;cnt<n;++cnt){ //free(tmp); key=0; tmp=(node *)malloc(sizeof(node)); for(i=0;i<6;++i){ scanf("%d",&tmp->num[i]); key+=tmp->num[i]; key=key%mod; } if(success==1) continue; tmp->next=NULL; key=key%mod; if(sign[key]==0){ p[key]=*tmp; sign[key]=1; }else if(sign[key]==1){ op=&p[key]; while(1){ if(cmp(op,tmp)==1){ success=1; break; } if(op->next==NULL) break; op=op->next; } if(success) continue; op->next=tmp; } } if(success==1) printf("Twin snowflakes found.\n"); else printf("No two snowflakes are alike.\n"); } return 0; }
相关文章推荐
- 哈希-poj-3349-相同的雪花
- POJ 3349 哈希一维搜索降二维
- 哈希—— POJ 3349 Snowflake Snow Snowflakes
- poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)
- poj_3349 Snowflake Snow Snowflakes(数字哈希)
- Snowflake Snow Snowflakes poj 3349 哈希
- POJ 3349 Snowflake Snow Snowflakes(哈希hash)
- poj 3349 Snowflake Snow Snowflakes 哈希
- POJ训练计划3349_Snowflake Snow Snowflakes(哈希)
- poj 3349 Snowflake Snow Snowflakes (哈希)@
- poj-3349-哈希
- poj-3349-Snowflake Snow Snowflakes-哈希
- POJ_3349_Snowflake_哈希
- POJ 3349 第一道哈希
- [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)
- poj--3349 Snowflake Snow Snowflakes(哈希)
- POJ 3349 哈希
- poj 3349 哈希
- POJ 3349-Snowflake Snow Snowflakes-字符串哈希
- POJ 3349 简单哈希