#1004 Let the Balloon Rise

http://acm.hdu.edu.cn/showproblem.php?pid=1004

输入一些字符串,输出其中出现次数最多的字符串。

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main()
 5 {
 6     int N, num[1000] = { 0 };
 7     int lop, lop2, max, t;
 8     char color[1000][16] = { 0 };
 9     while (scanf("%d", &N) != EOF && N)
10     {
11         memset(color, 0, sizeof(color));
12         memset(num, 0, sizeof(num));
13         for (lop = 0; lop < N; lop++)
14         {
15             scanf("%s", color[lop]);
16         }
17         for (lop = 0; lop < N - 1; lop++)
18         {
19             for (lop2 = lop+1; lop2 < N; lop2++)
20             {
21                 if (!strcmp(color[lop], color[lop2]))
22                 {
23                     num[lop]++;
24                 }
25             }
26         }
27         max = num[0];
28         t = 0;
29         for (lop = 1; lop < N; lop++)
30         {
31             if (max < num[lop])
32             {
33                 max = num[lop];
34                 t = lop;
35             }
36         }
37         printf("%s
", color[t]);
38     }
39     return 0;
40 }

我这是比较蠢的办法,所有字符串先输入完,再来一个个比,一样的计数就加1,最后再求一次计数最大的那个,十分麻烦。

似乎可以每输入一个字符串就对已有的所有字符串进行一次比较,应该能更好一点。

原文地址:https://www.cnblogs.com/makejeffer/p/4752106.html