zoukankan      html  css  js  c++  java
  • 字符串

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<string>
    using namespace std;
    int hashy[1000]={0};//存最后存入的哈希值为i的量的内存编号
    int nexty[20000];//存每个内存的上一个同哈希值量的内存的编号
    char data[20000][1000];//存数据
    int cnt=0;
    int u;
    inline void hash_insert(char * zfc)
    {
        int len=strlen(zfc);
        int val=0;
        for(int i=0;i<len;i++)val=(val+(zfc[i])*437)%997;//生成哈希值
        cnt++;
        strcpy(data[cnt],zfc);
        nexty[cnt]=hashy[val];
        hashy[val]=cnt;//放入量,模拟链表结构
    }
    inline bool hash_find(char *zfc)
    {
        int len=strlen(zfc);
        int val=0;
        for(int i=0;i<len;i++)val=(val+(zfc[i])*437)%997;
        u=hashy[val];
        while(u)//查询
        {
            if(strcmp(data[u],zfc)==0)return true;
            u=nexty[u];
        }
        return false;
    }
    char dr[1000];
    inline void dy(char*zfc)//读入(读优)
    {
        int d=0;
        char dr=getchar();
        while(!(dr==' '||(dr>='0'&&dr<='9')||(dr>='A'&&dr<='z')))dr=getchar();
        while(dr==' '||(dr>='0'&&dr<='9')||(dr>='A'&&dr<='z'))zfc[d++]=dr,dr=getchar();
    }
    int main()
    {
        int n,m;
        int day=0;
        cin>>n>>m;
        for(int i=0;i<n;i++)
        {
            memset(dr,0,sizeof(dr));
            dy(dr);
            hash_insert(dr);
        }
        for(int i=0;i<m;i++)
        {
            memset(dr,0,sizeof(dr));
            dy(dr);
            if(hash_find(dr))day++;//计数
        }
        printf("%d",day);
        return 0;
    }
  • 相关阅读:
    bisect in Python
    1385. 两个数组间的距离值
    面试题 04.08. 首个共同祖先
    Python关键字yield
    1237. 找出给定方程的正整数解
    响应式文字
    java环境变量设置
    小 div在大 div中左右上下居中
    清除浮动
    jQuery 图片等比缩放
  • 原文地址:https://www.cnblogs.com/third2333/p/7450249.html
Copyright © 2011-2022 走看看