zoukankan      html  css  js  c++  java
  • poj 2503 简单哈希

    题意:

    输入一个字典,然后查询字典,翻译单词。

    分析:

    这题以前做过,是Trie树的入门题,当时也用map水过,现在用hash再水一遍。。。

    比较好的输入处理: sscanf(str,"%s %s",str1,str2);



    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<cstring>
    using namespace std;
    const int prime=14997;
    typedef long long ll;
    typedef pair<int,int>pii;
    struct st
    {
        int len;
        char a[2][11];
    };
    vector<st>hs[prime];
    void getHash(char* s,int len)
    {
        ll t=0,k=10000000000;
        for(int i=0;i<len;i++)t+=k*(s[i]-'a'),k>>=1;
        int id=t%prime,j;
        for(int i=0;i<hs[id].size();i++){
            st& b=hs[id][i];
            if(b.len==len)
            for(j=0;j<len;j++)if(s[j]!=b.a[1][j])break;
            if(j==len){
                printf("%s
    ",b.a[0]);return;
            }
        }
        printf("eh
    ");
    }
    int main()
    {
        //freopen("f.txt","r",stdin);
        int i;
        char s[22];
        st p;
        while(gets(s)){
            int len=strlen(s);
            if(len==0)break;
            for(i=0;s[i]!=' ';i++)p.a[0][i]=s[i];
            ll t=0,k=10000000000;p.a[0][i++]=''; 
            p.len=len-i;
            int m=0;
            for(;i<len;i++)p.a[1][m++]=s[i],t+=k*(s[i]-'a'),k>>=1; //构造key值
            hs[t%prime].push_back(p);
        }
        while(~scanf("%s",s)){
            getHash(s,strlen(s));
        }
        return 0;
    }


  • 相关阅读:
    ci上传图片
    Mac下使用svn命令
    linux 下svn忽略文件
    thinkphp5 隐藏入口和支持pathinfo
    ci tp重定向
    php命名空间
    thinkphp5学习记录一
    Mac下安装homebrew
    使用iTerm2快捷连接SSH
    摄影基础
  • 原文地址:https://www.cnblogs.com/01world/p/5762847.html
Copyright © 2011-2022 走看看