题意:每片雪花有六瓣,给出n片雪花,六瓣花瓣的长度按顺时针或逆时针给出,判断其中有没有相同的雪花(六瓣花瓣的长度相同)

思路:如果直接遍历会超时,我试过。这里要用哈希表,哈希表的关键码key用六瓣花瓣的长度的和取余一个数得到,表中为雪花的存储位置address(即在snowflakes数组中的位置)

代码:

#include<iostream>
#include<vector>
using namespace std;
const int maxn=100000+100;//雪花最多数目
const int mo=98765;//哈希取余的数
int snowflakes[maxn][6];//存储雪花信息
vector<int>hash[mo];//哈希表 bool issame(int a,int b)
{
for(int j=0;j<6;j++)
{
if(/*顺时针方向*/
(snowflakes[a][0] == snowflakes[b][j] &&
snowflakes[a][1] == snowflakes[b][(j+1)%6] &&
snowflakes[a][2] == snowflakes[b][(j+2)%6] &&
snowflakes[a][3] == snowflakes[b][(j+3)%6] &&
snowflakes[a][4] == snowflakes[b][(j+4)%6] &&
snowflakes[a][5] == snowflakes[b][(j+5)%6]) ||
/*逆时针方向*/
(snowflakes[a][0] == snowflakes[b][j] &&
snowflakes[a][1] == snowflakes[b][(j+5)%6] &&
snowflakes[a][2] == snowflakes[b][(j+4)%6] &&
snowflakes[a][3] == snowflakes[b][(j+3)%6] &&
snowflakes[a][4] == snowflakes[b][(j+2)%6] &&
snowflakes[a][5] == snowflakes[b][(j+1)%6])
)
return true;
}
return false;
}
int main()
{
int n;
bool exist=false;
while(scanf("%d",&n)!=EOF)
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<6;j++)
scanf("%d",&snowflakes[i][j]);
int sum,key;
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<6;j++)
sum+=snowflakes[i][j];
key=sum%mo;//作为哈希表的key
vector<int>::iterator it;
for(it=hash[key].begin();it!=hash[key].end();it++)//遍历哈希表中key相同的雪花
if(issame(*it,i))
{
exist=true;
break;
}
hash[key].push_back(i);
}
if(exist)
printf("Twin snowflakes found.\n");
else
printf("No two snowflakes are alike.\n");
}
return 0;
}

POJ 3349 Snowflake Snow Snowflakes (哈希表)的更多相关文章

  1. 哈希—— POJ 3349 Snowflake Snow Snowflakes

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

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

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

  3. poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)

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

  4. [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)

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

  5. POJ 3349 Snowflake Snow Snowflakes

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

  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 (哈希)

    题意:给定n(0 < n ≤ 100000)个雪花,每个雪花有6个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...

  8. poj3349 Snowflake Snow Snowflakes —— 哈希表

    题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...

  9. POJ 3349 Snowflake Snow Snowflakes(哈希表)

    题意:判断有没有两朵相同的雪花.每朵雪花有六瓣,比较花瓣长度的方法看是否是一样的,如果对应的arms有相同的长度说明是一样的.给出n朵,只要有两朵是一样的就输出有Twin snowflakes fou ...

随机推荐

  1. Robot Motion - poj 1573

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11269   Accepted: 5486 Description A ...

  2. 【JMeter4.0学习(十一)】之JMeter对(Mysql、Oracle)数据库性能测试脚本开发

    一.MySQL数据库链接: 注:下面所产生的问题一律参考详见:<[JMeter4.0]之遇到的问题总结(持续更新)>(包括Mysql.Orcale) 准备:引包,包路径一定要放对位置,参考 ...

  3. 使用 cacti 批量监控服务器以及其 PHP 运作环境配置

    http://www.ibm.com/developerworks/cn/linux/l-cn-cacti/ http://www.360doc.com/content/12/0711/22/1465 ...

  4. Lumen开发:添加手机验证,中文验证与Validator验证的“半个”生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 添加手机验证方法可直接看这里:https://www.cnblogs.com/cxscode/p/9609828.html 今天来讲一下,Lume ...

  5. 多语言中的“默认语言”设置

    最近在搞一个多语言的东西,打算如果用户是中文环境就显示中文,其他任何非中文环境就显示英文.换句话说,把默认语言设置成英文. 不过因为VS是中文的,发现即使默认资源文件是英文(AppResource.r ...

  6. 优化tomcat启动速度

    1.去掉不需要的jar包,这样tomcat在启动时就可以少加载jar包里面的class文件. 2.跳过一些与TLD files.注解.网络碎片无关的jar包,通过在conf/catalina.prop ...

  7. 【python】-- 模块、os、sys、time/datetime、random、logging、re

    模块 模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个 ...

  8. Asp.Net 5 Web Hook

    首先,然我们来看一下WebHooks是什么.WebHooks是一个协议.它们是HTTP回调技术.并且它们是"用户定义的HTTP回调".你和 (或) 您的应用程序在有什么事情发生时会 ...

  9. Virtualbox报错------> VirtualBox虚拟机下鼠标不正常的解决方法

    在Virtualbox虚拟机下,突然发现鼠标使用不正常.出现2个鼠标,一个是Ubuntu主机下面的鼠标,一个是Window7下的鼠标,但是Win7下的鼠标不可以看得到,但是点击鼠标左右键可以看到有反应 ...

  10. Alex 的 Hadoop 菜鸟教程: 第2课 hadoop 安装教程 (CentOS6 CDH分支 yum方式)

    原帖地址:http://blog.csdn.net/nsrainbow/article/details/36629339 我们这个教程是在 centos  上安装cdh的教程,并且使用的是yum方式. ...