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 ...
随机推荐
- oracle 累加功能,累加百分比
最近做数据分析,需要用到累加功能,发现强大的oracle还真有,用over(order by field) 例子: 数据表中最后一列就是累加的效果 累加sql: select t.acc_pedal_ ...
- zabbix 自定义脚本监控activemq
1. 编写获取activemq队列积压消息(check-amq.sh) #!/bin/bash QUEUENAME=$ MQ_IP='172.16.1.56' curl -uadmin:admin h ...
- 【Selenium + Python】之OSError: [WinError 6] 句柄无效。
问题描述:执行多个用例的时候,会抛出异常: Traceback (most recent call last): File "F:\Demo\pomGisStu\gis\test_case\ ...
- js判断对象的属性是原型的还是实例的
一些情况下,我们需要知道对象的属性是原型的还是实例的,如果看代码的话比较繁琐,下面讲解下如何可以直接判断 1.hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的 ...
- Cannot merge new index 65781 into a non-jumbo instruction! 问题解决(网上摘抄)
我的报了这个错 Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.buil ...
- Android ijkplayer 强大的视频播放器框架教程 -- 导入demo运行(一)
首先介绍下这个开源项目,这个开源项目是BiliBli 开源的,首先感谢他们的团队. 这是开源的地址: https://github.com/Bilibili/ijkplayer 首先我为什么要选这个, ...
- ViewPager系列之 仿魅族应用的广告BannerView(转)
转载:http://www.open-open.com/lib/view/open1496585426285.html 使用方法:http://www.see-source.com/androidwi ...
- ubuntu 查看服务列表
查看服务列表代码 sudo service --status-allsudo initctl list from: http://zhidao.baidu.com/link?url=hLMXGocC2 ...
- centos7.0 安转apache2.4
安装apache2.4的需要安转apr和apr-util 包 APR和APR-util的下载地址 http://apache.fayea.com//apr/apr-1.6.2.tar.gzhttp:/ ...
- vue组件父子组件之间传递数据
举个栗子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...