题意:每个雪花有六个角,每个角用一个数字表示。输入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相关推荐

  1. POJ 3349.Snowflake Snow Snowflakes

    题目:http://poj.org/problem?id=3349 AC代码(C++): #include <iostream> #include <algorithm> #i ...

  2. POJ 3349 Snowflake Snow Snowflakes

    /* 哈希第一题啊..! 谢谢 http://www.cnblogs.com/Dario67/archive/2011/04/09/2010724.html 的博主 这题投机取巧了,判断是否相等 直接 ...

  3. ***POJ 3349 Snowflake Snow Snowflakes(哈希)

    第一次学习哈希,基本模仿题解写的 思路:首先这题时间比较紧,所以只能用加法求余来构造哈希表,然后容易出现冲突,所以冲突之后还需要判断是否为同种. 并且雪花有顺逆时针,所以需要两种时针方向,每种时针方向 ...

  4. UVa 3349 Snowflake Snow Snowflakes(Hash)

    http://poj.org/problem?id=3349 题意: 给出n片雪花留个角的长度,要求判断是否有一样的雪花. 思路: Hash表的应用. 首先将每个雪花所有角的总长计算出来,如果两片雪花 ...

  5. POJ3349 Snowflake Snow Snowflakes(hash)

    题意: 雪花有六条棱,每条棱对应一个数,要求在一组雪花中看能否寻找到所有棱对应相同的雪花(棱有顺序要求). 要点: 刚自学了一下hash,这题刚上手有点思路但自己实在也写不出来,看了网上的代码觉得还是 ...

  6. Snowflake Snow Snowflakes(Hash + 链式前向星)

    一.题意 每片雪花是由6个角组成,每片雪花的6个角由顺时针的顺序给出,当两片雪花顺时针或逆时针的角度相同时,则为雪花是同一片雪花.问n片雪花中是否有相同的雪花. 二.题解 我们定义HashHashHa ...

  7. 【POJ No. 3349】 雪花 Snowflake Snow Snowflakes

    [POJ No. 3349] 雪花 Snowflake Snow Snowflakes POJ 题目地址 [题意] 你可能听说过没有两片雪花是一样的,请编写一个程序来确定这是否是真的. 已知每片雪花6 ...

  8. Snowflake Snow Snowflakes(hash)

    F - Snowflake Snow Snowflakes Time Limit:4000MS     Memory Limit:65536KB     64bit IO Format:%I64d & ...

  9. Snowflake Snow Snowflakes(哈希表的应用)

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

最新文章

  1. 提高C++性能的编程技术笔记:设计优化/可扩展性/系统体系结构相关+测试代码
  2. Linux常用命令及Shell的简单介绍
  3. 京东玩三角恋,结果“擦枪走火”
  4. jenkins 打包 命令
  5. php中static和self的区别
  6. pyecharts应用1 词云
  7. 延长笔记本电脑寿命的四个简单方法
  8. python画同心圆程序_python – matplotlib:如何在给定的半径范围内绘制同心圆
  9. JavaScript(js)的replace问题的解决
  10. MySQL 游标的详解
  11. vue 倒计时插件_Vue的高性能和高精度倒计时插件
  12. matlab usb采集,求助MATLAB是否支持USB数据采集卡
  13. windows 文件保护机制
  14. JavaScript推箱子游戏开发笔记
  15. 炙手可热的ZNS SSD将会为数据中心带来什么?
  16. 最速降线问题公式推导
  17. 开始我的Python学习历程
  18. 3D游戏引擎系列十一
  19. postgresql常用操作指令
  20. 《基础会计学》期末模拟试题及答案

热门文章

  1. 产品、开发、UI等技术部门常用工具
  2. Ubuntu 19.10 安装 美化 优化 conky Docker
  3. 《定时执行专家》更新日志 - 5.5.0.0(300.16052021)版 - boom 2021-5-16
  4. MacClean360 for mac(系统清理软件)
  5. 适合上网本的linux系统,2011最佳上网本Linux发行版TOP 5
  6. 用C语言实现输入密码是显示为***
  7. 【技术规划】描绘未来第 4 部分:技术路线图
  8. 有一个好的人工智能导航网,学习和兴趣加倍心流状态!
  9. samba实现windows访问virtualBox共享文件夹
  10. nlog官方帮助_NLog类库使用探索——详解配置