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 }
posted @ 2012-06-10 09:49  Seraph2012  阅读(310)  评论(0编辑  收藏  举报