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,最后再求一次计数最大的那个,十分麻烦。
似乎可以每输入一个字符串就对已有的所有字符串进行一次比较,应该能更好一点。