POJ 3349 Snowflake Snow Snowflakes Hash
题目链接: http://poj.org/problem?id=3349
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
const int prime = ; struct Snow
{
int leg[];
}snow[]; struct HashTable
{
struct Snow *data;
struct HashTable *next;
HashTable()
{
next = NULL;
}
}; struct HashTable *Hash[prime]; bool clockwise(const struct Snow &a, const struct Snow &b)
{
for(int i = , j; i < ; i++)
{
if(a.leg[i] == b.leg[])
{
for(j = ; j < ; j++)
{
if(a.leg[(i+j)%] != b.leg[j])
break;
}
if(j >= )return ;
}
}
return ;
} bool counterclockwise(const struct Snow &a, const struct Snow &b)
{
for(int i = , j; i < ; i++)
{
if(a.leg[i] == b.leg[])
{
for(j = ; j < ; j++)
{
if(a.leg[(i+j)%] != b.leg[-j])
break;
}
if(j >= )return ;
}
}
return ;
} bool hash_insert(int key, struct Snow *snow_ptr)
{
if(Hash[key] == NULL)
{
Hash[key] = new HashTable;
Hash[key]->data = snow_ptr;
}
else
{
struct HashTable *p = Hash[key];
while(p != NULL)
{
if(clockwise(*p->data, *snow_ptr) || counterclockwise(*p->data, *snow_ptr))
return ;
else p = p->next;
}
p = new HashTable;
p->data = snow_ptr;
}
return ;
} int main()
{
int n, key;
while(scanf("%d", &n) != EOF)
{
bool ok = ;
memset(Hash, , sizeof(Hash));
for(int i = ; i < n; i++)
{
key = ;
for(int j = ; j < ; j++)
{
scanf("%d", &snow[i].leg[j]);
key += snow[i].leg[j];
}
key %= prime;
if(!ok)
{
ok = hash_insert(key, &snow[i]);
}
}
printf("%s\n", ok ? "Twin snowflakes found." : "No two snowflakes are alike.");
}
return ;
}
POJ 3349 Snowflake Snow Snowflakes Hash的更多相关文章
- 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: ...
- [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: 30529 Accep ...
- [poj 3349] Snowflake Snow Snowflakes 解题报告 (hash表)
题目链接:http://poj.org/problem?id=3349 Description You may have heard that no two snowflakes are alike. ...
- hash应用以及vector的使用简介:POJ 3349 Snowflake Snow Snowflakes
今天学的hash.说实话还没怎么搞懂,明天有时间把知识点总结写了,今天就小小的写个结题报告吧! 题意: 在n (n<100000)个雪花中判断是否存在两片完全相同的雪花,每片雪花有6个角,每个角 ...
- POJ 3349 Snowflake Snow Snowflakes(哈希)
http://poj.org/problem?id=3349 题意 :分别给你n片雪花的六个角的长度,让你比较一下这n个雪花有没有相同的. 思路:一开始以为把每一个雪花的六个角的长度sort一下,然后 ...
随机推荐
- windows下载安装MariaDB5.5.32 绿色版
1.下载地址: http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/mariadb-5.5.32/win32-packages/mariadb-5.5.32 ...
- Android 读取手机短信
获取android手机短信需要在AndroidManifest.xml加权限: <uses-permission android:name="android.permission.RE ...
- QT线程(一):线程类
线程之间共享数据,但又单独执行: QT线程QThread是平台无关的: 通常主线程从main开始执行,而在主线程中创建其他线程,其他线程派生于QThread: 1.线程优先级 总共8个优先级:线程 ...
- 常用数据库的驱动类/URL/默认端口
常用数据库的驱动类/URL/默认端口 1.Oracle: 格式: 驱动:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin ...
- BeagleBone Black Linux驱动程序开发入门(1): LED驱动程序
这篇文章展示如何在BBB平台上编写LED驱动程序,本文的程序是根据国嵌S3C2440的LED驱动的例子并结合内核中OMAP系列的gpio操作来改的.本文中的程序包括驱动程序模块和用户空间程序.废话不多 ...
- volatile的使用原则
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/4352802.html ...
- 纯js写“运动”框架
所谓“运动”不一定真的是运动,在连续的一段时间内改变某一样式都可以成为“运动”. 先写几个会用到的函数 //获取某一元素的指定样式 function getstyle (element, target ...
- Browser 对象
Browser 对象 window对象表示浏览器中打开的窗口如果文档包含框架(iframe 或 iframe标签),浏览器会为HTML文档创建一个window对象,并为每个框架创建一个额外的windo ...
- js 取到相同的字符串 返回对应的下标
["aaa","aaa","","ddd","eee","eee"," ...
- Unity3D 之武器系统冷却功能的实现方式
先上方法 //如果Fire1按钮被按下(默认为ctrl),每0.5秒实例化一发子弹 public GameObject projectile; public float fireRate = 0.5F ...