杭电oj1004

第一种方法

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

char color[1005][100];
int number[1005];
int top;

int n;

void judge(char str[]){
    for(int i=0;i<top;i++){
        if(strcmp(str,color[i])==0){
            number[i]++;
            return ;
        }
    }

    strcpy(color[top],str);
    top++;
}

int main(){
    while(scanf("%d",&n),n!=0){
        //init
        top=0;
        memset(color,0,sizeof(color));
        memset(number,0,sizeof(number));
        for(int i=0;i<n;i++){
            char tmp[100];
            scanf("%s",tmp);
            judge(tmp);
        }

        //print
        int ans=-1;
        int pos=0;
        for(int i=0;i<top;i++){
            if(ans<number[i]){
                ans=number[i];
                pos=i;
            }
        }
        printf("%s\n",color[pos]);
    }
    return 0;
}
第二种方法:

可以不用拍序,这里只是复习一下拍序

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

typedef struct color
{
    char str[20];
    int coun;
}A;
A colors[1005];

int cmp(const void *x,const void *y)
{
    color *A=(color *)x;
    color *B=(color *)y;
    return B->coun-A->coun;
}

int main()
{
    int n;
    char temp[20];
    while(scanf("%d",&n)&&n)
    {
        getchar();
        int pos=0;

        while(n--)
        {
            scanf("%s",temp);
            int tag=1;

            for(int i=0;i<pos;i++){
                if(strcmp(temp,colors[i].str)==0){
                    tag=0;
                    colors[i].coun++;
                    break;
                }
            }

            if(tag){
                strcpy(colors[pos].str,temp);
                colors[pos++].coun=1;
            }
        }


        qsort(colors,pos-1,sizeof(colors[0]),cmp);
        printf("%s\n",colors);
    }

}



你可能感兴趣的:(杭电oj1004)