回 帖 发 新 帖 刷新版面

主题:[讨论]2104这道题怎么总是超时啊,代码如下

http://acm.zju.edu.cn/show_problem.php?pid=2104

#include <iostream>
#include <string>
using namespace std;

int cmp(const void*p1, const void*p2)
{
    return strcmp((char*)p1,(char*)p2);
}

main()
{
    char s[1001][30];
    char t[30],max[30],mark;
    int n,i,sum;
    while (cin>>n&&n)
    {
        for(i=0;i<n;i++)
            cin>>s[i];
        qsort(s,n,sizeof(s[0]),cmp);

        i=0,mark=-1;
        while(n>0) {
            sum=0;
            strcpy(t,s[i]);
            while(!strcmp(t,s[i]))
                sum++,i++;
            if(sum>mark)
            {
                strcpy(max,t);
                mark=sum;
            }
            n-=i;
        }
        cout << max << endl;
    }
}

回复列表 (共1个回复)

沙发

以前写的代码。。。。给你贴一下吧

[code]
#include <iostream>
#include <string>
using namespace std;

int num[100];
char str[1010][15];
char col[15];

int main()
{
    int n, j = 0, kind = 0;
    while(cin >> n && n) {
        memset(num, 0, 100 * sizeof(int));
        scanf("%s", col);
        num[kind]++;
        kind;
        strcpy(str[kind++], col);
        for(int i = 1; i < n; i++) {
            scanf("%s", col);
            for(int k = 0; k < kind; k++) 
                if(strcmp(col, str[k]) == 0) {
                    num[k]++;
                    break;
                }
                if(k == kind) {
                    strcpy(str[kind], col);
                    num[kind]++;
                    kind++;
                }
        }
        int max = -1;
        for(i = 0; i < kind; i++) 
            if(num[i] > max) 
                max = num[i];
            for(i = 0; i < kind; i++)
                if(max == num[i])
                    printf("%s\n", str[i]);
        
    }
    return 0;
}
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册