zoukankan      html  css  js  c++  java
  • 字符串hash模板

    int BKDRHash(char *str)
    {
        int seed = 131; 
        int hash = 0;
        while (*str) hash = hash * seed + (*str++);
        return (hash & 0x7FFFFFFF) % MAXN;
    }
    struct HashMap
    {
        int head[Hash + 10]; int next[maxn + 10]; int val[maxn + 10]; int ans[maxn + 10][31];
        int pos[maxn + 10];
        int size;
        void init()
        {
            size = 0; memset(head, -1, sizeof(head));
        }
        int ask(int a[])
        {
            int t = 0;
            for (int i = 0; i < k; i++) t += a[i];
            int gg = (t%Hash + Hash) % Hash;
            for (int i = head[gg]; i != -1; i = next[i]){
                if (val[i] == t){
                    int flag = 0;
                    for (int j = 0; j < k; j++) {
                        if (ans[i][j] != a[j]) {
                            flag = 1; break;
                        }
                    }
                    if (flag == 0) return pos[i];
                }
            }
            return -2;
        }
        void insert(int a[], int p)
        {
            int t = 0;
            for (int i = 0; i < k; i++) t += a[i];
            int gg = (t%Hash + Hash) % Hash;;
            for (int i = head[gg]; i != -1; i = next[i]){
                if (val[i] == t){
                    int flag = 0;
                    for (int j = 0; j < k; j++){
                        if (ans[i][j] != a[j]){
                            flag = 1; break;
                        }
                    }
                    if (flag == 0) return;
                }
            }
            val[size] = t; next[size] = head[gg];
            pos[size] = p;
            for (int i = 0; i < k; i++) ans[size][i] = a[i];
            head[gg] = size++;
        }
    }m;
  • 相关阅读:
    自定义轮播图、自定义集合控件的实现
    推荐一个比较好用的工具
    博客迁移至简书
    ReactiveCocoa学习资料
    Xcode常用快捷键
    iOS自定义字体
    cocoapod的安装与使用
    iOS开发笔记
    UIWebView的三种加载方式
    项目常用第三方库
  • 原文地址:https://www.cnblogs.com/yigexigua/p/4340040.html
Copyright © 2011-2022 走看看