zoukankan      html  css  js  c++  java
  • HDU 1004 题解

    HDU 1004

    【标记】【字符串】【map】
    题目


    Main Idea:

        输入数字N,有N个气球,每行输入气球颜色,最后输出相同颜色气球最多的颜色。
    

    Summary:

        1.用while会造成PE
    
    int N=1;
        while(N!=0){
            scanf("%d",&N);
            
        }
    
        2.熟练运用strcpy、strcmp、strlen等函数
    
        3.关于颜色个数专门开一个数组或者vector来标记
    
        4.用map容器可以很快的解决问题。
    

    Problem Solving Idea

        对于每个输入的字符串用一个二维字符串数组存储,并构建一个元素全为0数组,在二维字符串数组对应的行数进行标记(+1)。如果发现输入字符串在二维字符串数组中已存在,则不新存入字符串,在数组对应的地方++。最后检查数组哪个地方数字最大,则得出二维字符串数组中第几行的字符串是出现次数最多的,输出该字符串。
    

    AC代码(version 1)

    #include <bits/stdc++.h> 
    #define ll long long
    using namespace std;
    
    int Findmax(int record[]){
    	int Find=0,max=0,i=1;
    	for(i=1;i<101;i++){
    		if(max<record[i]){
    			max=record[i];
    			Find=i;
    		}
    	}
    	return Find;
    }
    
    int main(){
    	int N=1;
    	for(;;){
    		scanf("%d",&N);
    		if(N==0)	break;
    		int cnt=0;
    		char compare[103][17];
    		int record[101];
    		memset(record,0,sizeof(record));
    		for(int i0=0;i0<N;i0++){
    			int flag=1,i;
    			char s[17];
    			scanf("%s",s);
    			for(i=1;i<=cnt;i++){
    				if(strcmp(compare[i],s)==0){
    					flag=0;
    					//printf("%d",flag);
    					break;
    				}
    			}
    			if(flag==1){
    				strcpy(compare[++cnt],s);
    				record[cnt]++;
    			}
    			if(flag==0)	record[i]++;
    			
    		}
    		printf("%s
    ",compare[Findmax(record)]);
    	}
    	return 0;
    }
    

    AC代码(version 2)

    #include <bits/stdc++.h> 
    using namespace std;
    typedef long long ll;
    map<string,int> mp;
    int main()
    {
    	int t;
     	while(cin >> t && t != 0)
     	{
     		mp.clear();
     		string p;
     		int maxs = 0;
     		for(int i = 0;i < t;i ++)
     		{
     			string k;
     			cin >> k;
     			mp[k]++;
     			if(mp[k] > maxs)
     			{
     				maxs = mp[k];
     				p = k;
    			}
    		}
    	   cout << p << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    (转)130道ASP.NET面试题
    (转)c#对象内存模型
    (转)探讨:ASP.NET技术的学习顺序问题
    (转)ASP.NET缓存概念及其应用浅析
    Response.Redirect在新窗口打开网页
    转载 C# 序列化与反序列化意义详解
    简单进制转化
    简单成绩管理系统(没有存盘)
    kali不能ifconfig等简单命令
    蓝桥杯练习之开花(二分法查找)
  • 原文地址:https://www.cnblogs.com/Fhr2001/p/11959202.html
Copyright © 2011-2022 走看看