题意:一个雪花有六个角  给出N个雪花 判断有没有相同的(可以随意旋转)

参考:https://blog.csdn.net/alongela/article/details/8245005

注意:参考的博客的写法有问题  不知道POJ为什么没有卡掉

例如 数据         1

1 1 1 1 1 1

如果用这个博客的写法 等于自己和自己比了 输出的是yes

只要稍微改一下  改成比完之后插入key就能解决了

疑问:  manx=1000000+10会T 改成1200000+10才能过不知道为什么

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=;
const int MOD=;
int HashTable[maxn];
int cur=;
struct Node{
int num[];
int next;
}node[MOD+]; unsigned getHash(int*num){
unsigned sum=;
for(int i=;i<;i++)
sum=(sum+num[i])%MOD;
return sum%MODhttps:
}
void insertHash(int*num,unsigned key){
for(int i=;i<;i++)node[cur].num[i]=num[i];
node[cur].next=HashTable[key];
HashTable[key]=cur;
cur++;
}
bool cmp(int*num1,int*num2){
for(int i=;i<;i++){
if(num1[i]!=num2[i])return ;
}
return ;
}
bool searchHash(int*num){
unsigned key=getHash(num);
int next=HashTable[key];
while(next!=-){
if(cmp(num,node[next].num))return ;
next=node[next].next;
}
//insertHash(num,key);//不能边查边插,否则会自己匹配自己
return ;
}
int main(){
int n;
int num[][];
bool flag=;
cur=;
memset(HashTable,-,sizeof(HashTable));
scanf("%d",&n);
while(n--){
for(int i=;i<;i++){
scanf("%d",&num[][i]);
num[][i+]=num[][i];
}
if(flag)continue;
for(int i=;i<;i++){
num[][i+]=num[][i]=num[][-i];
}
for(int i=;i<;i++){
if(searchHash(num[]+i)||searchHash(num[]+i)){
flag=;
// cout<<111<<endl;
break;
}
}
for(int i=;i<;i++){//这里改成了之后插入
insertHash(num[]+i,getHash(num[]+i));
insertHash(num[]+i,getHash(num[]+i));
}
}
if(flag)printf("Twin snowflakes found.\n");
else printf("No two snowflakes are alike.\n"); return ;
}

Snowflake Snow Snowflakes POJ - 3349 Hash的更多相关文章

  1. Snowflake Snow Snowflakes - poj 3349 (hash函数)

    判断n朵雪花中,是否有完全一样的雪花.简单的hash,将雪花的六个边的权值加起来,记为sum,将sum相等的雪花归为一类,再在这里面根据题意找完全相同的,判断顺时针或者逆时针的所有角是否一模一样. # ...

  2. Snowflake Snow Snowflakes POJ - 3349(hash)

    You may have heard that no two snowflakes are alike. Your task is to write a program to determine wh ...

  3. POJ--3349 Snowflake Snow Snowflakes(数字hash)

    链接:Snowflake Snow Snowflakes 判断所有的雪花里面有没有相同的 每次把雪花每个角的值进行相加和相乘 之后hash #include<iostream> #incl ...

  4. 【POJ3349 Snowflake Snow Snowflakes】【Hash表】

    最近在对照省选知识点自己的技能树 今天是Hash 题面 大概是给定有n个6元序列 定义两个序列相等 当两个序列各自从某一个元素开始顺时针或者逆时针旋转排列能得到两个相同的序列 求这n个6元序列中是否有 ...

  5. POJ 3349:Snowflake Snow Snowflakes(数的Hash)

    http://poj.org/problem?id=3349 Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K T ...

  6. POJ 3349 Snowflake Snow Snowflakes (Hash)

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 48646   Accep ...

  7. 哈希—— POJ 3349 Snowflake Snow Snowflakes

    相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions ...

  8. POJ 3349 Snowflake Snow Snowflakes(简单哈希)

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 39324   Accep ...

  9. POJ 3349 Snowflake Snow Snowflakes

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...

随机推荐

  1. java 日志框架总结

    在项目开发过程中,我们可以通过 debug 查找问题.而在线上环境我们查找问题只能通过打印日志的方式查找问题.因此对于一个项目而言,日志记录是一个非常重要的问题.因此,如何选择一个合适的日志记录框架也 ...

  2. Ubuntu 18.04 根目录为啥只有 4G 大小

    其实准确点儿的描述应该是:Ubuntu Server 18.04 ,设置 LVM,安装完成后根目录的容量为什么只有 4G?只有 Server 版有问题,Desktop 版没有问题,Ubuntu 16. ...

  3. 比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]

    ASP.NET Core是.与.Net Core FrameWork一起发布的ASP.NET 新版本,最初被称为ASP.NET vNext,有一系列的命名变化,ASP.NET 5.0,ASP.NET ...

  4. python第六章:三大利器(装饰器,迭代器,生成器)--小白博客

    python装饰器 什么是装饰器?在不修改源代码和调用方式的基础上给其增加新的功能,多个装饰器可以装饰在同一个函数上 # 原理(个人理解):将原函数(bar)的内存地址重新赋值,进行覆盖.新值为装饰器 ...

  5. linus 下redis守护进程启动

    修改配置文件 sudo vim /usr/src/redis/redis.conf // 具体的安装目录不一样,以安装的时候为准 # 将daemonize 改为yes daemonize yes 重新 ...

  6. Eclipse启动错误JVM terminated. exit code 1解决方法

    现象: 前一天eclipse还用得好好的,但今天就不能用了,怎么回事? 解决方案: 请先参考其它网络资料:http://www.baidu.com/s?wd=eclipse+jvm+terminate ...

  7. Pair Project

    以前只是一个人完成一个项目,不论什么都是,现在突然要两个人一起来写, 听上去挺稀奇的,也挺简单的,可惜了就是“听上去”而已.我认为这也是一种技术啊~ 我跟我的搭档研究了好久好久,选择了好久,然后也选了 ...

  8. no-sql数据库之redis

    一.FAQ 1.如果用连接器连接redis不成功,报如下错误: crash-report-server replied:Request Entity Too Large 则可以先通过cmd命令查看端口 ...

  9. Java Core - static关键字的理解

    一.基本常识 二.关于main方法 我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了.因为程序在执行main方法的时候没有创建任何对象,因此只有 ...

  10. ocrosoft 程序设计提高期末复习问题M 递归求猴子吃桃

    http://acm.ocrosoft.com/problem.php?cid=1172&pid=12 题目描述 猴子吃桃问题.猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. ...