• POJ 3349 Snowflake Snow Snowflakes


    poj 3349 

    雪花是否相同

    #include<iostream>
    #include <algorithm>
    #include <stdio.h>
    #include <cstdio>
    
    using namespace std;
    
    #define size 100010
    
    int arr[size][6];
    int n;
    
    struct node{
        int key;
        node *next;
    };
    
    node HashTable[size];
    node HashPool[size];
    int index = 0;
    
    node *getNewNode()
    {
        return &HashPool[index++];
    }
    
    void insert(int key,node *newNode)
    {
        node *tmp = &HashTable[key];
        newNode->next = tmp->next;
        tmp->next = newNode;
    }
    
    bool isSame(int a,int b)
    {
        sort(arr[a],arr[a]+6);
        sort(arr[b],arr[b]+6);
        for(int i = 0; i < 6;i++)
        {
            if(arr[a][i] != arr[b][i])
                return false;
        }
    
        return true;
    }
    
    int getKey(int a[6])
    {
        int sum = 0;
        for(int i = 0; i < 6; i++)
            sum += a[i];
    
        return sum%99991;
    }
    bool search(int key,int i)
    {
        node *tmp = &HashTable[key];
        tmp = tmp -> next;
        while(tmp != NULL)
        {
            int j = tmp->key;
            tmp = tmp->next;
            if(isSame(i,j))
                return true;
        }
    
        return false;
    
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < 6; j++)
            {
                scanf("%d",&arr[i][j]);
            }
        }
    
        for(int i = 0; i < n ;i++)
        {
            int key = getKey(arr[i]);
            bool flag = search(key,i);
            if(flag)
            {
                printf("%s
    ", "Twin snowflakes found.");
                return 0;
            }
            else
            {
                node *newNode = getNewNode();
                newNode->key = i;
                insert(key,newNode);
            }
    
        }
        printf("%s
    ", "No two snowflakes are alike.");
        return 0;
    }
  • 相关阅读:
    g++
    Adapter
    使用 JDBC 连接MySQL 、SQL Server数据库
    Chrom Firefox 非安全端口访问
    Cent OS & Windows 双系统自定义引导菜单
    Cent OS 7 安装海峰、极点五笔输入法
    数据结构:单链表
    切记要初始化指针
    Java 连接 MySQL 数据库
    C语言 Struct 结构体在 Java 中的体现
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/8033850.html
Copyright © 2020-2023  润新知