POJ 3349 Snowflake Snow Snowflakes (哈希表)
题意:每片雪花有六瓣,给出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 (哈希表)的更多相关文章
- 哈希—— 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: 30529 Accep ...
- [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30512 Accep ...
- POJ 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...
- POJ 3349 Snowflake Snow Snowflakes (Hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 48646 Accep ...
- POJ - 3349 Snowflake Snow Snowflakes (哈希)
题意:给定n(0 < n ≤ 100000)个雪花,每个雪花有6个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...
- poj3349 Snowflake Snow Snowflakes —— 哈希表
题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...
- POJ 3349 Snowflake Snow Snowflakes(哈希表)
题意:判断有没有两朵相同的雪花.每朵雪花有六瓣,比较花瓣长度的方法看是否是一样的,如果对应的arms有相同的长度说明是一样的.给出n朵,只要有两朵是一样的就输出有Twin snowflakes fou ...
随机推荐
- 正负小数点后两位浮点数--jquery
背景:项目中需要做个对两位小数点的正负浮点数的处理, 要求:非数字或者.字符自动清除,并对.12自动修补.前的0 原理:在输入框中加入两个事件,keyup与blur,keyup处理字符串中非要求的字符 ...
- UFLDL深度学习笔记 (三)无监督特征学习
UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...
- Lumen开发:lumen源码解读之初始化(2)——门面(Facades)与数据库(db)
版权声明:本文为博主原创文章,未经博主允许不得转载. 紧接上一篇 $app->withFacades();//为应用程序注册门面. $app->withEloquent();//为应用程序 ...
- linux下apache php配置redis
1.安装redis 第一步: 下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz 上传phpredis-2.2.4.tar.gz ...
- 【BZOJ4033】[HAOI2015]树上染色 树形DP
[BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...
- POJ 2856 Y2K Accounting Bug【简单暴力】
链接: http://poj.org/problem?id=2586 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#probl ...
- mybatis相关
1 namespace dao中使用namespace+id一起来完成对mapper中sql statement的调用. 2 关于resultMap和parameterType parameterTy ...
- MAC 脚本批量启动应用
1.touch batchStart.sh 2. #!/bin/bash cd /xxx open 1.app open 2.app 3.chmod +x batchStart.sh 4.ok
- java堆分析神器MAT
Memory Analyzer(MAT) 基于Eclipse的软件 http://www.eclipse.org/mat/
- Django之stark组件2
action批量处理功能 用户可以自定义批量处理功能,但是默认的有批量删除功能. ***思路*** 1,定义一个列表用来装action的类名并extend用户自定义列表 2.循环该列表获取到函数名(用 ...