解析:相比于HDU的排序题来说,很简单了。秒过。
启示:按照某一元素排序可以用结构体,甚至可以把每一个单元看成一个对象。
1 #include <stdio.h> 2 #include <string.h> 3 struct zifu{ 4 char ch; 5 int num; 6 }a[26]; 7 int main() 8 { 9 int n, i, j, t; 10 char c, temp; 11 scanf("%d", &n); 12 for(i = 0; i < 26; i++){ 13 a[i].ch = i + 'a'; 14 a[i].num = 0; 15 } 16 while((c = getchar()) != EOF){ 17 if(c >= 'A' && c <= 'Z') 18 c += 32; 19 if(c >= 'a' && c <= 'z') 20 a[c-'a'].num++; 21 } 22 for(i = 0; i < 26; i++) 23 for(j = i + 1; j < 26; j++){ 24 if(a[i].num < a[j].num){ 25 t = a[i].num; 26 a[i].num = a[j].num; 27 a[j].num = t; 28 temp = a[i].ch; 29 a[i].ch = a[j].ch; 30 a[j].ch = temp; 31 } 32 if(a[i].num == a[j].num) 33 if(a[i].ch > a[j].ch){ 34 t = a[i].num; 35 a[i].num = a[j].num; 36 a[j].num = t; 37 temp = a[i].ch; 38 a[i].ch = a[j].ch; 39 a[j].ch = temp; 40 } 41 } 42 for(i = 0; i < 26; i++) 43 if(a[i].num > 0) 44 printf("%c %d\n", a[i].ch-32, a[i].num); 45 return 0; 46 }