hdu 2708
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2708
题意:给4行,统计大写字母的频率,然后按图示输出。
mark:此题很坑,主要表现在:1.每行行末的空格不可以输出!2.输入是多组!!!
wa了n次。一开始找max_row的时候初始化各种改错。。。
代码:
1 # include <stdio.h> 2 # include <string.h> 3 4 5 int tab[300] ; 6 char str[100] ; 7 int max_tab[300] ; 8 9 10 int main () 11 { 12 int i, j ; 13 int max_row ; 14 while (1) 15 { 16 max_row = 0 ; 17 memset (tab, 0, sizeof(tab)) ; 18 for (i = 0 ; i < 4 ; i++) 19 { 20 if (gets (str) == NULL) return 0 ; 21 for (j = 0 ; str[j] ; j++) 22 { 23 if (str[j] >= 'A' && str[j] <= 'Z'){ 24 tab[str[j]]++ ; 25 if (tab[str[j]] > max_row) max_row = tab[str[j]] ; 26 } 27 } 28 } 29 30 max_tab['Z'] = tab['Z'] ; 31 32 for (i = 'Z'-1 ; i >= 'A'; i--) 33 if (tab[i]>max_tab[i+1]) 34 max_tab[i] = tab[i] ; 35 else max_tab[i] = max_tab[i+1] ; 36 37 38 for (i = 0 ; i < max_row ; i++) 39 { 40 for (j = 'A' ; j <= 'Z' ; j++) 41 { 42 if (j != 'A') putchar (' ') ; 43 if (i < max_row - tab[j]) putchar (' ') ; 44 else putchar ('*') ; 45 if (i < max_row - max_tab[j+1]) break ; 46 } 47 printf ("\n") ; 48 } 49 putchar ('A') ; 50 for (j = 'B' ; j<='Z' ; j++) printf (" %c", j) ; 51 printf ("\n") ; 52 } 53 return 0 ; 54 }