poj3349 哈希
这题目写了一上午,一直错,然后自己测试数据还都对。为什么呢,为什么呢,后来我才发现代码里有一行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[];
node *next;
}p[mod];
int sign[mod];
int cmp_1(node *a,node *b,int pos){
int i,j=pos;
for(i=;i<;++i){
if(a->num[i]!=b->num[j])
return ;
j=(j+)%;
}
return ;
}
int cmp_2(node *a,node *b,int pos){
int i,j=pos;
for(i=;i<;++i){
if(a->num[i]!=b->num[j])
return ;
j=(j-+)%;
}
return ;
}
int cmp(node *a,node *b){
int i,j;
for(i=;i<;++i){
if(cmp_1(a,b,i)==||cmp_2(a,b,i)==)
return ;
}
return ;
}
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,,sizeof(sign));
success=;
for(i=;i<mod;++i){
p[i].next=NULL;
for(j=;j<;++j) p[i].num[j]=;
} for(cnt=;cnt<n;++cnt){
//free(tmp);
key=;
tmp=(node *)malloc(sizeof(node));
for(i=;i<;++i){
scanf("%d",&tmp->num[i]);
key+=tmp->num[i];
key=key%mod;
}
if(success==) continue;
tmp->next=NULL;
key=key%mod;
if(sign[key]==){
p[key]=*tmp;
sign[key]=;
}else if(sign[key]==){
op=&p[key];
while(){
if(cmp(op,tmp)==){
success=;
break;
}
if(op->next==NULL) break;
op=op->next;
}
if(success) continue;
op->next=tmp;
}
}
if(success==) printf("Twin snowflakes found.\n");
else printf("No two snowflakes are alike.\n"); }
return ;
}
poj3349 哈希的更多相关文章
- poj3349(哈希+链地址法)
给出N个六边形的6个边长,问其中是否有完全相同的两个六边形,完全相同包括边的长度和位置都要相同.边给出的顺序是逆时针或者顺时针的. 给每个6边形一个哈希值,方法是对6条边长度的平方和取模 #inclu ...
- hdu&&poj搜索题题号
搜索 hdu1067 哈希 hdu1401 双向搜索 hdu1430 哈希 hdu1667 跌搜+启发式函数 hdu1685 启发式搜索 hdu1813 启发式搜索 hdu1885 状态压缩搜索 hd ...
- poj3349 Snowflake Snow Snowflakes —— 哈希表
题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...
- POJ3349 Snowflake Snow Snowflakes(哈希)
题目链接. 分析: 哈希竟然能这么用.检查两片雪花是否相同不难,但如果是直接暴力,定会超时.所以要求哈希值相同时再检查. AC代码: #include <iostream> #includ ...
- poj3349找相同的雪花(哈希)
题目传送门 题目大意:给你n个雪花,每个雪花的六个棱都有各自的长度,如果存在两片雪花的每条棱长度对应相同,则输出一句英文,如果不存在就输出另外一句英文,n和长度都比较大. 思路:第一次真正接触哈希,查 ...
- POJ3349 Snowflake Snow Snowflakes 【哈希表】
题目 很简单,给一堆6元组,可以从任意位置开始往任意方向读,问有没有两个相同的6元组 题解 hash表入门题 先把一个六元组的积 + 和取模作为hash值,然后查表即可 期望\(O(n)\) #inc ...
- POJ3349 Snowflake Snow Snowflakes (JAVA)
首先声明代码并没有AC,内存超了 但我对此无能为力,有没有哪位大神好心教一下怎么写 哈希,然后比较花瓣数组,这些应该都没问题才对..唉.. 贴MLE代码 import java.util.*; pub ...
- [PHP内核探索]PHP中的哈希表
在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
随机推荐
- Mongodb(3)插入文档,更新文档,删除文档
insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法. 插入文档:db.COLLECTION_NAME.insert(d ...
- 为什么引用不了App_Code里的类
在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...
- BarTender破解问题
要使用BarTender 10.0的.net组件打印条码,就必须使用企业版的.在破解说明中会指出,BarTender破解过程要断开internet连接.在企业应用开发中,可能会遇到在局域网中给多个机器 ...
- iis7 500错误日志报 LOG_FILE_MAX_SIZE_TRUNCATE
参考:http://blogs.iis.net/robert_mcmurray/freb-log-file-max-size-truncate cd /d "%windir%\system3 ...
- 简单数据访问类,生成简单SQL,自动转换成java对象
import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...
- NoSQL与关系型数据库比较
虽然09年出现了比较激进的文章<关系数据库已死>,但是我们心里都清楚,关系数据库其实还活得好好的,你还不能不用关系数据库.但是也说明了一个事实,关系数据库在处理WEB2.0数据的时候,的确 ...
- df、du、fdisk:Linux磁盘管理三板斧的使用心得(转载)
From:http://os.51cto.com/art/201012/240726_all.htm 作者介绍:李洋(博客),博士毕业于中科院计算所.10多年来一直从事计算机网络信息安全研发工作,曾主 ...
- ubuntu 修该rm命令使删除文件到回收站
ubuntu下删除文件到回收站 相信有不少同学和我一样,有因习惯了rm命令,好几次一不小心冲动就删除重要文件的惨痛经历! 目标:将删除成功的文件会放入系统回收站中,位置:~/.local/share/ ...
- c#生成缩略图
publicstaticvoidGenThumbnail(Image imageFrom,stringpathImageTo,intwidth,intheight) { ...
- oracle安装—Windows7旗舰版32位安装oracle10g方法
首先要下载支持Vista版本的Oracle 10g下载完成后解压出来:http://download.oracle.com/otn/nt/oracle10g/10203/10203_vista_w2k ...