杭电1004

来源:互联网 发布:算法与数据结构英文 编辑:程序博客网 时间:2024/06/03 20:19

输出最多的颜色

Input
Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) – the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.

A test case with N = 0 terminates the input and this test case is not to be processed.

Output
For each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.

Sample Input
5
green
red
blue
red
red
3
pink
orange
pink
0

Sample Output
red
pink

解法1:

# include <stdio.h>    # include <string.h>    int main(){    char st[1005][20];    int i,j,k,n,len,t;    while(scanf("%d",&n),n){        for(i=0;i<n;i++){            scanf("%s",st[i]);        }        k = 0;        t = 0;        for(i=0;i<n;i++){            int j = i+1,cnt = 0 ;            for(;j<n;j++){                if(strcmp(st[i],st[j])==0){                    cnt++;                }             }            if(cnt>t){                t = cnt;                k = i;                cnt = 0;            }        }        printf("%s\n",st[k]);    }    return 0;    } 

解法2(map):

利用map(与java中treemap对应,,--- java的hashmap就是c++的unordered_map(无序)):    # include <iostream>    # include <map>    # include <string>    using namespace std;    int main(){    int n,i,j;    map<string,int> mapstr;     string str;    int max = 0;    string ch;    while(cin>>n,n){        max = 0;        while(n--){            cin>>str;            if(mapstr[str]==0){                mapstr[str] = 1;                            }else{                mapstr[str]++;            }            //只所以这样处理是因为map排序            if(mapstr[str]>max){                max = mapstr[str];                ch = str;            }           }         cout<<ch<<endl;         mapstr.clear();    }    return 0;    }
0 0
原创粉丝点击