贝贝的图形
题目描述
贝贝最近玩起了字符游戏,规则是这样的:读入四行字符串,其中的字母都是大写的,乐乐想打印一个柱状图显示每个大写字母的频率。你能帮助他吗?
输入 输入共有4行:每行为一串字符,不超过72个字符。
输出与样例的格式保持严格一致。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
注意:
1.相邻字符间有一个空格。
2.最后一行的26个大写字母每次必须输出。
3.大写字母A所在的第一列前没有空格。
做的时候以为很难,都做好长期抗战的准备了,最后做完发现竟然一遍AC了。嗯,题目很水,自上而下,自左而右的一次遍历就能解决。需要注意的是每行第一个和其他的输出格式不一样,要分情况打印。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,b[300]={0},maxn=0;
char a[75];
n=4;
while(n--)
{
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
{
b[a[i]-'A']++;
maxn=max(maxn,b[a[i]-'A']);
}
}
}
for(j=maxn;j>0;j--)
{
for(i=0;i<26;i++)
{
if(i==0)
{
if(b[i]>=j) printf("*");//第一个后面没有空格
else printf(" ");
}
else
{
if(b[i]>=j) printf(" *");
else printf(" ");
}
}
printf("\n");//每行结束要换行
}
printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n");
return 0;
}