zoukankan      html  css  js  c++  java
  • 算法与数据结构实验题 9.2 寻人启事

    1、题目:

    2、AC代码:

    #include<stdio.h>
    #include<string.h>
    #define size 1000003   //哈希表的长度,离1000000最近的素数  
    #define n 6
    
    struct Value{
    	char *val;
    	Value *next;
    };
    
    char name[size][n];
    Value hash[size];
    
    //计算hash值的算法 
    int BKDRhash(char *s)
    {
    	int seed=131;
    	__int64 hash =0;
    	while(*s)
    	{
    		hash=hash*seed+(*s++);
    	}
    	return hash%size;
    }
    
    //查找是否存在相等的hash值  
    bool Find(char *name)
    {
    	int t=BKDRhash(name);
    	if(hash[t].val)
    	{
    		if(strcmp(name,hash[t].val)==0)//找到相等的hash值 
    		{
    			return true;
    		}
    		else
    		{
    			Value *v=hash[t].next;
    			while(v)
    			{
    				if(strcmp(v->val,name)==0)
    				return true;
    				v=v->next; 
    			}
    		}
    	}
    	return false;
    }
    
    
    int main()
    {
    	int i,N,M,t;
    	int ans=0;
    	char str[6];
    	Value *tmp;
    	scanf("%d%d",&N,&M);
    	for(i=0;i<size;i++)
    	{
    		hash[i].next=NULL;
    		hash[i].val=NULL;
    	}
    	
    	for(i=0;i<N;i++)	//实现插入 
    	{
    		scanf("%s",name[i]);
    		t=BKDRhash(name[i]);
    		if(hash[t].val==NULL)	//如果当前元素为空,则插入 
    		{
    			hash[t].val=name[i];
    		}
    		else	//若不为空,则插入到链表中 
    		{
    			tmp=new Value;
    			tmp->val=name[i];
    			tmp->next=hash[t].next;
    			hash[t].next=tmp;
    		}
    	}
    	//查找 
    	for(i=0;i<M;i++)
    	{
    		scanf("%s",str);
    		if(Find(str)==true)
    		{
    			ans++;
    		}
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

    3、一个TLE代码:

    #include<stdio.h>
    #include<string.h>
    char name[1000001][10],str[1001][10];
    int main()
    {
    	int n,m;
    	scanf("%d%d",&n,&m);
    	int i,j;
    	int count=0;
    	for(i=0; i<n; i++)
    	{
    		scanf("%s",name[i]);
    	}
    	for(j=0; j<m; j++)
    	{
    		scanf("%s",str[j]);
    		for(i=0; i<n; i++)
    		{
    			if(strcmp(name[i],str[j])==0)
    			{
    				count++;
    				break; 
    			}
    		}
    	}
    	printf("%d
    ",count);
    	return 0;
    }
  • 相关阅读:
    使用 Redis 实现分布式系统轻量级协调技术
    高并发系统中的常见问题
    ASP.NET跨平台
    消息队列RabbitMQ
    Redis数据结构
    自定义的配置文件实现动态注入
    redis基础的字符串类型
    持久化redis
    redis
    MS Open Tech 技术团队构建可靠的Windows版Redis
  • 原文地址:https://www.cnblogs.com/laixiaolian/p/6083028.html
Copyright © 2011-2022 走看看