题意:一个雪花有六个角  给出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. log4j打印堆栈信息

    原文地址:https://blog.csdn.net/xianyu_0418/article/details/6043174 大家都知道,网站在运行的过程中,打印必要的log对记录网站的运行情况.从而 ...

  2. 华为MAC Flapping , MAC的漂移

    华为写的很详细,MAC 地址的漂移会导致流量的中断. 华为阻止MAC地址漂移的方法有三种: 一.端口配置静态MAC地址 在全局视图下,执行命令mac-address static mac-addres ...

  3. 关于function和task的说明

    1.  关于函数function调用,总结两个要点: 1.  函数调用一般产生一个值,这个值被赋值给某个变量 2.  函数所返回的值只能是一个,不可以是多个,不能像C语言中采用指针的方式返回多个值.因 ...

  4. 14-Requests+正则表达式爬取猫眼电影

    '''Requests+正则表达式爬取猫眼电影TOP100''''''流程框架:抓去单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果.正则表达式分析:根据HTML代码分析 ...

  5. 关于iframe页面里的重定向问题

    最近公司做的一个功能,使用了iframe,父页面内嵌子页面,里面的坑还挺多的,上次其实就遇到过,只不过今天在此描述一下. 请允许我画个草图: 外层大圈是父级页面,里层是子级页面,我们是在父级引用子级页 ...

  6. JS典记

        var href = "";     //遍历a标签     $ ( "a"). each (function () {         href = ...

  7. 软件工程(FZU2015) 增补作业

    SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 说明 张老师为FZU软件工程2015班级添加了一次增补作业,总分10分,deadline是2016/01/01-2016/ ...

  8. python3 打开页面后多窗口处理三种方法

    多窗口处理三种方法 导包,实例化浏览器from selenium import webdriver fx=webdriver.Firefox()方法一fx.switch_to.window(fx.wi ...

  9. C\C++学习笔记 2

    C++记录4 自动存储: 生命周期在代码块,存储在栈,后入先出. 静态存储: 存在于程序的整个周期. 动态存储: 使用new delete 在内存池(堆)存储,不受程序生命周期控制. 内存泄露: 没有 ...

  10. 11 The superlative

    1 最高级用来表明三个或更多事物之间的关系.最高级是通过在形容词之前加 "the" 并在之后加 "-est",或在形容词之前加 "the most&q ...