POJ 3349 Snowflake Snow Snowflakes hash
题意:每个雪花有六个角,每个角用一个数字表示。输入n个雪花,若存在两个雪花相等则输出Twin snowflakes found。否则输出No two snowflakes are alike.
题解:hash
#include <iostream>
#include <cstdlib>
using namespace std;#define Prime 14997struct ListNode
{int a[6];struct ListNode *next;
};
struct ListNode table[Prime];bool isFindsame( int key, int *b )
{ListNode *p = table[key].next;int i, j, cnt, s;while( p != NULL ){for( s = 0; s < 6; ++s ) /*枚举比较的起点,一个始终0-5,另一个不断改变*/{for( i = cnt = 0, j = s; cnt < 6; ++i,++j ) //顺时针{if ( j > 5 ) j = j % 6;if( p->a[i] != b[j] ) break;else ++cnt;}if( cnt == 6 ) return true; /*若六个角均相同,则返回true*/for( i = cnt = 0, j = s; cnt < 6; ++i, --j ) //逆时针{if ( j < 0 ) j = j + 6;if( p->a[i] != b[j] ) break;else ++cnt;}if( cnt == 6 ) return true;}p = p->next;}return false;
}void Insert( int key, int *b )
{ListNode *p = new (ListNode);for ( int i = 0; i < 6; ++i )p->a[i] = b[i];p->next = table[key].next;table[key].next = p;
}int main()
{int b[6], n, HashVal, id, i, j;bool flag = false;memset(table,NULL,sizeof(table));scanf("%d",&n);for( i = 0; i < n && !flag; i++ ){for( j = HashVal = 0; j < 6; j++ ){scanf("%d",b+j);HashVal += b[j];}id = HashVal % Prime;if( isFindsame( id, b ) ) flag = true;else Insert( id, b );}if( flag )printf("Twin snowflakes found.\n");elseprintf("No two snowflakes are alike.\n");return 0;
}
POJ 3349 Snowflake Snow Snowflakes hash相关推荐
- POJ 3349.Snowflake Snow Snowflakes
题目:http://poj.org/problem?id=3349 AC代码(C++): #include <iostream> #include <algorithm> #i ...
- POJ 3349 Snowflake Snow Snowflakes
/* 哈希第一题啊..! 谢谢 http://www.cnblogs.com/Dario67/archive/2011/04/09/2010724.html 的博主 这题投机取巧了,判断是否相等 直接 ...
- ***POJ 3349 Snowflake Snow Snowflakes(哈希)
第一次学习哈希,基本模仿题解写的 思路:首先这题时间比较紧,所以只能用加法求余来构造哈希表,然后容易出现冲突,所以冲突之后还需要判断是否为同种. 并且雪花有顺逆时针,所以需要两种时针方向,每种时针方向 ...
- UVa 3349 Snowflake Snow Snowflakes(Hash)
http://poj.org/problem?id=3349 题意: 给出n片雪花留个角的长度,要求判断是否有一样的雪花. 思路: Hash表的应用. 首先将每个雪花所有角的总长计算出来,如果两片雪花 ...
- POJ3349 Snowflake Snow Snowflakes(hash)
题意: 雪花有六条棱,每条棱对应一个数,要求在一组雪花中看能否寻找到所有棱对应相同的雪花(棱有顺序要求). 要点: 刚自学了一下hash,这题刚上手有点思路但自己实在也写不出来,看了网上的代码觉得还是 ...
- Snowflake Snow Snowflakes(Hash + 链式前向星)
一.题意 每片雪花是由6个角组成,每片雪花的6个角由顺时针的顺序给出,当两片雪花顺时针或逆时针的角度相同时,则为雪花是同一片雪花.问n片雪花中是否有相同的雪花. 二.题解 我们定义HashHashHa ...
- 【POJ No. 3349】 雪花 Snowflake Snow Snowflakes
[POJ No. 3349] 雪花 Snowflake Snow Snowflakes POJ 题目地址 [题意] 你可能听说过没有两片雪花是一样的,请编写一个程序来确定这是否是真的. 已知每片雪花6 ...
- Snowflake Snow Snowflakes(hash)
F - Snowflake Snow Snowflakes Time Limit:4000MS Memory Limit:65536KB 64bit IO Format:%I64d & ...
- Snowflake Snow Snowflakes(哈希表的应用)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27312 Accep ...
最新文章
- 提高C++性能的编程技术笔记:设计优化/可扩展性/系统体系结构相关+测试代码
- Linux常用命令及Shell的简单介绍
- 京东玩三角恋,结果“擦枪走火”
- jenkins 打包 命令
- php中static和self的区别
- pyecharts应用1 词云
- 延长笔记本电脑寿命的四个简单方法
- python画同心圆程序_python – matplotlib:如何在给定的半径范围内绘制同心圆
- JavaScript(js)的replace问题的解决
- MySQL 游标的详解
- vue 倒计时插件_Vue的高性能和高精度倒计时插件
- matlab usb采集,求助MATLAB是否支持USB数据采集卡
- windows 文件保护机制
- JavaScript推箱子游戏开发笔记
- 炙手可热的ZNS SSD将会为数据中心带来什么?
- 最速降线问题公式推导
- 开始我的Python学习历程
- 3D游戏引擎系列十一
- postgresql常用操作指令
- 《基础会计学》期末模拟试题及答案
热门文章
- 产品、开发、UI等技术部门常用工具
- Ubuntu 19.10 安装 美化 优化 conky Docker
- 《定时执行专家》更新日志 - 5.5.0.0(300.16052021)版 - boom 2021-5-16
- MacClean360 for mac(系统清理软件)
- 适合上网本的linux系统,2011最佳上网本Linux发行版TOP 5
- 用C语言实现输入密码是显示为***
- 【技术规划】描绘未来第 4 部分:技术路线图
- 有一个好的人工智能导航网,学习和兴趣加倍心流状态!
- samba实现windows访问virtualBox共享文件夹
- nlog官方帮助_NLog类库使用探索——详解配置