1. 程式人生 > >杭電1004(簡單題)

杭電1004(簡單題)

Problem Description
Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges’ favorite time is guessing the most popular problem. When the contest is over, they will count the balloons of each color and find the result.

This year, they decide to leave this lovely job to you.

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

此題比較簡單,我的做法是先對字串排序,排序後相同的字串必定緊挨著一起。要計算出每個字元出現的次數,只要計算其下面有多少個字元跟它相同,然後再加一即可。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char ballon[1010][20];

int cmp(const void *_a,const void *_b)
{
    char *a=(char *)_a;
    char *b=(char *)_b;
    return strcmp(a,b);
}

int main()
{
    int N,max,mindex,t,tindex;//max是字串出現的次數的最大值,mindex是次數最多的字串的下標。t是當前掃描的字串出現的次數,tindex是與當前字串相同,且第一次出現的字串的下標
    while(scanf("%d",&N)==1&&N>0)
    {
        max=0;
        mindex=0;
        int i,j;
        for(i=0;i<N;i++)
        {
            memset(ballon[i],0,sizeof(char)*20);
            scanf("%s",ballon[i]);
        }
        qsort(ballon,N,sizeof(char)*20,cmp);
        for(i=0;i<N;i++)
        {
            t=1;
            tindex=i;
            for(j=i+1;;j++)
            {
                if(strcmp(ballon[tindex],ballon[j])!=0)
                    break;
                t++;
            }
            i=j-1;//起初i=j,一直WA。因為j就是下一次開始計數的起點。如果i=j,下一輪迴圈i++後,i=i+1.那麼下一輪計數就會少計數一個
            if(t>max)
            {
                max=t;
                mindex=tindex;
            }
        }
        printf("%s\n",ballon[mindex]);

    }
    return 0;
}