zoukankan      html  css  js  c++  java
  • poj 2503 字符串hash

    题目链接:http://poj.org/problem?id=2503

    代码:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    const int maxn = 100050;
    const int HASH = 1000003;
    
    int head[HASH],next[maxn];
    char s1[maxn][15],s2[maxn][15];
    int n;
    
    int hash(char *s)
    {
        int ret = 0;
        int seed = 131;
        while(*s)
        {
            ret = ret * seed + *(s++);
        }
        return (ret & 0x7fffffff) % HASH;
    }
    
    int search(char *s)
    {
        int i;
        int id = hash(s);
        for(i=head[id]; i!=-1; i=next[i])
        {
            if(strcmp(s,s2[i]) == 0)
                break;
        }
        return i;
    }
    
    void input()
    {
        memset(head,-1,sizeof(head));
        n = 0;
        char ch[30];
        gets(ch);
        while(ch[0] != '')
        {
            int i=0,j;
            for(i=0,j=0; ch[i]!=' '; i++,j++)
                s1[n][j] = ch[i];
            s1[n][j] = '';
            i++;
            for(j=0; ch[i]!=''; i++,j++)
                s2[n][j] = ch[i];
            s2[n][j] = '';
    
            int id = hash(s2[n]);
            next[n] = head[id];
            head[id] = n;
            n++;
            gets(ch);
        }
    }
    
    void solve()
    {
        char ch[15];
        while(scanf("%s",ch) == 1)
        {
            int id = search(ch);
            if(id == -1)
            {
                printf("eh
    ");
            }
            else
            {
                printf("%s
    ",s1[id]);
            }
        }
    }
    int main()
    {
      //  freopen("E:\acm\input.txt","r",stdin);
        input();
        solve();
    }
    View Code
  • 相关阅读:
    《POJ-2369》
    《1402
    《2018 Multi-University Training Contest 8》
    《HDU
    循环串
    模拟赛 数根 题解
    备份
    关于带删除线性基
    论OIer谈恋爱的必要性
    某计数题题解
  • 原文地址:https://www.cnblogs.com/acmdeweilai/p/3364018.html
Copyright © 2011-2022 走看看