• poj3349 哈希查找


      求出六个雪花叶子的长度,然后取模。这个是我第一次写哈希,也不太会啊,所以就参考了一下别人的代码,我感觉他的代码写的好文艺啊。 挺不错的,我以后也要注意代码格式问题了。

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 #include <vector>
     5 #define  maxn 100005
     6 #define  mod_val 90001
     7 using namespace std;
     8 
     9 vector<int>hash[mod_val];
    10 int snow[maxn][6];
    11 
    12 bool isSame(int a,int b)
    13 {
    14     int i,j;
    15     for(i=0;i<6;++i)
    16     {
    17         if(
    18             ( snow[a][0]==snow[b][i]&&
    19               snow[a][1]==snow[b][(i+1)%6]&&
    20               snow[a][2]==snow[b][(i+2)%6]&&
    21               snow[a][3]==snow[b][(i+3)%6]&&
    22               snow[a][4]==snow[b][(i+4)%6]&&
    23               snow[a][5]==snow[b][(i+5)%6])
    24             ||
    25             ( snow[a][0]==snow[b][i]&&
    26               snow[a][1]==snow[b][(i+5)%6]&&
    27               snow[a][2]==snow[b][(i+4)%6]&&
    28               snow[a][3]==snow[b][(i+3)%6]&&
    29               snow[a][4]==snow[b][(i+2)%6]&&
    30               snow[a][5]==snow[b][(i+1)%6])
    31           )
    32           return 1;
    33     }
    34     return 0;
    35 }
    36 
    37 int main()
    38 {
    39     int n,i,j;
    40     int key;
    41     int sum;
    42     scanf("%d",&n);
    43     for(i=0;i<n;++i)
    44         for(j=0;j<6;++j)
    45             scanf("%d",&snow[i][j]);
    46     
    47     for(i=0;i<n;++i)
    48     {
    49         sum=0;
    50         for(j=0;j<6;++j)
    51             sum+=snow[i][j];
    52 
    53         key=sum % mod_val;
    54 
    55         for(vector<int>::size_type j=0 ; j < hash[key].size() ; ++j )
    56         {
    57             if(isSame(hash[key][j],i))
    58             {
    59                 printf("Twin snowflakes found.\n");
    60                 exit(0);
    61             }
    62         }
    63 
    64         hash[key].push_back(i);
    65     }
    66     
    67     printf("No two snowflakes are alike.\n");
    68 
    69     return 0;
    70 }
  • 相关阅读:
    动态规划3-最长公共子序列问题
    动态规划2-最大子段和
    动态规划1- 矩阵取数
    javac编译提示错误需要为 class、interface 或 enum
    [core python programming]chapter 7 programming MS office
    ubuntu apache nginx 启动 关闭
    ubuntu 安装 hustoj
    TCP报文段的首部格式
    守护进程
    会话session
  • 原文地址:https://www.cnblogs.com/symons1992/p/3006472.html
Copyright © 2020-2023  润新知