• steam 字符串hash or map


    【问题描述】
    山山又开始颓了, 打开 steam 先看看玩什么。打开之后惊异的发现,这周这么多免费
    游戏,不过看起来好多都玩过啊,不知道玩什么了,于是他浏览了下游戏,发现只有一个游
    戏玩过几遍,其他几乎只玩过一遍的,也有根本没玩过的,鉴于 steam 上的免费游戏一般
    都是奇葩游戏,所以他认为玩过次数最多的那个游戏一定更好玩,他就会玩玩过最多的游戏,
    由于游戏名字太难记了,所以请你来统计一下他玩过的游戏记录,并且告诉他玩什么游戏。


    【输入格式】
    输入文件名为 steam.in。
    第一行一个 n,一个 m,表示 n 个游戏,m 条游戏记录
    接下来 m 行一行一个数字 ai,表示他玩的游戏名,保证每个游戏名等长


    【输出格式】
    输出文件名为 steam.out。
    第一行输出一个数表示他这次要玩的游戏名,保证答案

    样例:

    输入:

    4 4

    213151541243213

    415415436435343

    213151541243213

    643453251745433

    输出:

    213151541243213


    其实这题我开始是用hash做的,但是错了,后来用的沈队叫我的map做的,算是我map的一个模板吧。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    
    #define ll long long
    #define il inline
    #define db double
    
    #define max(a,b) ((a)>(b)?(a):(b))
    
    using namespace std;
    
    map<string,int>SS;
    
    int times[10000045];
    
    char ch[145];
    
    int ans;
    
    char hzr[145];
    
    int p=31,t=10000007;
    
    int main()
    {
    	freopen("steam.in","r",stdin);
    	freopen("steam.out","w",stdout);
    
    	int n,m;
    	cin>>n>>m;
    	
    	int len;
    	for(int i=1;i<=m;i++)
    		{
    			scanf("%s",ch);
    			if(i==1)
    				len=strlen(ch);
    			if(SS.count(ch)==0)
    				SS[ch]=1;
    			else
    				{
    					SS[ch]++;
    					if(SS[ch]>ans)
    						{
    							ans=SS[ch];
    							for(int j=0;j<len;j++)
    								hzr[j]=ch[j];
    						}
    				}
    		}
    	
    	printf("%s
    ",hzr);
    
    	return 0;
    }
    
    PEACE
  • 相关阅读:
    Java基础
    第11章 处理概括关系
    第10章 简化函数调用
    第9章 简化条件表达式
    第8章 重新组织数据(暂略)
    第7章 在对象之间搬移特性
    第6章 重新组织函数
    【剑指offer】57
    【每日一题-leetcode】45.跳跃游戏 ||
    【左神算法】随机+荷兰国旗优化版快排
  • 原文地址:https://www.cnblogs.com/gshdyjz/p/7677303.html
Copyright © 2020-2023  润新知