Snowflake Snow Snowflakes POJ - 3349 Hash
题意:一个雪花有六个角 给出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的更多相关文章
- Snowflake Snow Snowflakes - poj 3349 (hash函数)
判断n朵雪花中,是否有完全一样的雪花.简单的hash,将雪花的六个边的权值加起来,记为sum,将sum相等的雪花归为一类,再在这里面根据题意找完全相同的,判断顺时针或者逆时针的所有角是否一模一样. # ...
- 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 ...
- POJ--3349 Snowflake Snow Snowflakes(数字hash)
链接:Snowflake Snow Snowflakes 判断所有的雪花里面有没有相同的 每次把雪花每个角的值进行相加和相乘 之后hash #include<iostream> #incl ...
- 【POJ3349 Snowflake Snow Snowflakes】【Hash表】
最近在对照省选知识点自己的技能树 今天是Hash 题面 大概是给定有n个6元序列 定义两个序列相等 当两个序列各自从某一个元素开始顺时针或者逆时针旋转排列能得到两个相同的序列 求这n个6元序列中是否有 ...
- POJ 3349:Snowflake Snow Snowflakes(数的Hash)
http://poj.org/problem?id=3349 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K T ...
- POJ 3349 Snowflake Snow Snowflakes (Hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 48646 Accep ...
- 哈希—— POJ 3349 Snowflake Snow Snowflakes
相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions ...
- POJ 3349 Snowflake Snow Snowflakes(简单哈希)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 39324 Accep ...
- POJ 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...
随机推荐
- MemSQL与MySQL不兼容问题总结
1.数据行Update更新数据行时,如果数据行没有变化,MySQL返回受影响的数据行数为1,但MemSQL返回的数据行数为0. 2.MemSQL不支持唯一约束 3.MemSQL不支持外键约束
- Oracle 一个用户将表权限赋给另一个用户
原文地址:https://blog.csdn.net/u012129031/article/details/76218764 1.将用户user1的表权限赋给用户user2 select 'gra ...
- OO博客作业1:第1-3周作业总结
(1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实 ...
- 【RSYSLOG】Log4x To Rsyslog Config
Log4x To Rsyslog Config Log4net配置 <!--RemoteSyslogAppender--> <appender name="remoteSy ...
- Elasticsearch的DSL之比较重要的几个查询语句
1. match_all { "match_all": {}} 匹配所有的, 当不给查询条件时,默认. 2. match 进行full text search或者exact va ...
- PS调出怀旧雨中特写的非主流照片
原图 最终效果 一.打开原图素材,按Ctrl + ALt + ~ 调出高光选区,按Ctrl + Shift + I 反选,然后创建曲线调整图层,适当调暗一点. 二.合并所有图层,点通道面板,选择蓝色通 ...
- p67交换幺环为整环的充要条件
如何理解并且证明这个定理?谢谢 (0)是素理想,也是就是说,只要ab∈(0)就有a∈(0)或者b∈(0) 这等价于说 ab=0就有a=0或b=0. 它这里给的证明是什么意思呢?它是利用了素理想的等价刻 ...
- JAVA项目中的常用的异常处理情况
NO.1 java.lang.NullPointerException 这个异常比较容易遇到,此异常的解释是“程序遇上了空指针”,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现 ...
- Python_线程、线程效率测试、数据隔离测试、主线程和子线程
0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当 ...
- 个人博客作业-week5-敏捷开发方法读后感
满篇英文对一个非单词狂魔来说真的是很吃力啊… 敏捷软件开发方法是一种从1990年代开始逐渐引起广发关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力,他们的具体名称.理念.过程.术 ...