• 算法与数据结构实验题 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;
    }
  • 相关阅读:
    Maven 集成Tomcat插件
    dubbo 序列化 问题 属性值 丢失 ArrayList 解决
    docker 中安装 FastDFS 总结
    docker 从容器中拷文件到宿主机器中
    db2 相关命令
    Webphere WAS 启动
    CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
    SpringMVC JSONP JSON支持
    CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮
    git回退到远程某个版本
  • 原文地址:https://www.cnblogs.com/laixiaolian/p/6083028.html
Copyright © 2020-2023  润新知