#include<iostream>
#include <map>
#include <math.h>
#include <algorithm>
#include <cstring>
using namespace std;
int main(){
string s;
int cnt[26];
memset(cnt,0,sizeof(cnt));
getline(cin,s);
for(int i=1;i<=4;i++){
for(int j=0;j<s.size();j++){
if(s[j]>='A'&&s[j]<='Z'){
cnt[(int)(s[j]-'A')]++;
}
}
getline(cin,s);
}
int max=0; //记录数量最多的字母数,方便后续输出
for(int i=0;i<26;i++){
if(cnt[i]>max){
max=cnt[i];
}
}
int sign[max+1]; //记录之后按行输出到哪个字母截止,防止多输出空格
memset(sign,0,sizeof(sign));
for(int i=max;i>=1;i--){
for(int j=0;j<26;j++){
if(cnt[j]>=i){
sign[i]=j;
}
}
}
for(int j=max;j>=1;j--){ //按行输出
for(int i=0;i<26;i++){
if(cnt[i]>=j){
cout<<"*";
if(i!=sign[j]){
cout<<" ";
}else{
break;
}
}else{
cout<<" ";
if(i!=sign[j]){
cout<<" ";
}else{
break;
}
}
}
cout<<endl;
}
for(int i=0;i<26;i++){
cout<<(char)('A'+i);
if(i!=25){
cout<<" ";
}
}
return 0;
}
P1598 垂直柱状图(C++)
最新推荐文章于 2024-07-24 14:54:00 发布