题意:每片雪花有六瓣,给出n片雪花,六瓣花瓣的长度按顺时针或逆时针给出,判断其中有没有相同的雪花(六瓣花瓣的长度相同)

思路:如果直接遍历会超时,我试过。这里要用哈希表,哈希表的关键码key用六瓣花瓣的长度的和取余一个数得到,表中为雪花的存储位置address(即在snowflakes数组中的位置)

代码:

  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. const int maxn=100000+100;//雪花最多数目
  5. const int mo=98765;//哈希取余的数
  6. int snowflakes[maxn][6];//存储雪花信息
  7. vector<int>hash[mo];//哈希表
  8.  
  9. bool issame(int a,int b)
  10. {
  11. for(int j=0;j<6;j++)
  12. {
  13. if(/*顺时针方向*/
  14. (snowflakes[a][0] == snowflakes[b][j] &&
  15. snowflakes[a][1] == snowflakes[b][(j+1)%6] &&
  16. snowflakes[a][2] == snowflakes[b][(j+2)%6] &&
  17. snowflakes[a][3] == snowflakes[b][(j+3)%6] &&
  18. snowflakes[a][4] == snowflakes[b][(j+4)%6] &&
  19. snowflakes[a][5] == snowflakes[b][(j+5)%6])
  20.  
  21. ||
  22. /*逆时针方向*/
  23. (snowflakes[a][0] == snowflakes[b][j] &&
  24. snowflakes[a][1] == snowflakes[b][(j+5)%6] &&
  25. snowflakes[a][2] == snowflakes[b][(j+4)%6] &&
  26. snowflakes[a][3] == snowflakes[b][(j+3)%6] &&
  27. snowflakes[a][4] == snowflakes[b][(j+2)%6] &&
  28. snowflakes[a][5] == snowflakes[b][(j+1)%6])
  29. )
  30. return true;
  31. }
  32. return false;
  33. }
  34. int main()
  35. {
  36. int n;
  37. bool exist=false;
  38. while(scanf("%d",&n)!=EOF)
  39. {
  40. int i,j,k;
  41. for(i=0;i<n;i++)
  42. for(j=0;j<6;j++)
  43. scanf("%d",&snowflakes[i][j]);
  44. int sum,key;
  45. for(i=0;i<n;i++)
  46. {
  47. sum=0;
  48. for(j=0;j<6;j++)
  49. sum+=snowflakes[i][j];
  50. key=sum%mo;//作为哈希表的key
  51. vector<int>::iterator it;
  52. for(it=hash[key].begin();it!=hash[key].end();it++)//遍历哈希表中key相同的雪花
  53. if(issame(*it,i))
  54. {
  55. exist=true;
  56. break;
  57. }
  58. hash[key].push_back(i);
  59. }
  60. if(exist)
  61. printf("Twin snowflakes found.\n");
  62. else
  63. printf("No two snowflakes are alike.\n");
  64. }
  65. return 0;
  66. }

POJ 3349 Snowflake Snow Snowflakes (哈希表)的更多相关文章

  1. 哈希—— POJ 3349 Snowflake Snow Snowflakes

    相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions ...

  2. POJ 3349 Snowflake Snow Snowflakes(简单哈希)

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

  3. poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)

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

  4. [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)

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

  5. POJ 3349 Snowflake Snow Snowflakes

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...

  6. POJ 3349 Snowflake Snow Snowflakes (Hash)

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

  7. POJ - 3349 Snowflake Snow Snowflakes (哈希)

    题意:给定n(0 < n ≤ 100000)个雪花,每个雪花有6个花瓣(花瓣具有一定的长度),问是否存在两个相同的雪花.若两个雪花以某个花瓣为起点顺时针或逆时针各花瓣长度依次相同,则认为两花瓣相 ...

  8. poj3349 Snowflake Snow Snowflakes —— 哈希表

    题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...

  9. POJ 3349 Snowflake Snow Snowflakes(哈希表)

    题意:判断有没有两朵相同的雪花.每朵雪花有六瓣,比较花瓣长度的方法看是否是一样的,如果对应的arms有相同的长度说明是一样的.给出n朵,只要有两朵是一样的就输出有Twin snowflakes fou ...

随机推荐

  1. 正负小数点后两位浮点数--jquery

    背景:项目中需要做个对两位小数点的正负浮点数的处理, 要求:非数字或者.字符自动清除,并对.12自动修补.前的0 原理:在输入框中加入两个事件,keyup与blur,keyup处理字符串中非要求的字符 ...

  2. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

  3. Lumen开发:lumen源码解读之初始化(2)——门面(Facades)与数据库(db)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 紧接上一篇 $app->withFacades();//为应用程序注册门面. $app->withEloquent();//为应用程序 ...

  4. linux下apache php配置redis

    1.安装redis 第一步: 下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz 上传phpredis-2.2.4.tar.gz ...

  5. 【BZOJ4033】[HAOI2015]树上染色 树形DP

    [BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...

  6. POJ 2856 Y2K Accounting Bug【简单暴力】

    链接: http://poj.org/problem?id=2586 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#probl ...

  7. mybatis相关

    1 namespace dao中使用namespace+id一起来完成对mapper中sql statement的调用. 2 关于resultMap和parameterType parameterTy ...

  8. MAC 脚本批量启动应用

    1.touch batchStart.sh 2. #!/bin/bash cd /xxx open 1.app open 2.app 3.chmod +x batchStart.sh 4.ok

  9. java堆分析神器MAT

    Memory Analyzer(MAT) 基于Eclipse的软件 http://www.eclipse.org/mat/

  10. Django之stark组件2

    action批量处理功能 用户可以自定义批量处理功能,但是默认的有批量删除功能. ***思路*** 1,定义一个列表用来装action的类名并extend用户自定义列表 2.循环该列表获取到函数名(用 ...