题解 P1598 【垂直柱状图】
****看前面那么多大佬写的都好厉害,作为一个蒟蒻的我都看不懂。。所以自己写了个比较简单的
上代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char c[26];//记录字母
int num[26]={0};//记录字母次数
for(int i=0;i<26;i++)
c[i]='A'+i;//记录下每个字母
for(int i=0;i<4;i++)
{
string s;
getline(cin,s);//输入
for(int j=0;j<=s.size();j++)
for(int m=0;m<26;m++)
{
if(s[j]==c[m])
num[m]++;//记录各个字母出现了几次
}
}
int maxn=0;
for(int i=0;i<26;i++)
{
if(maxn<num[i])
maxn=num[i];
}//找到出现次数最多的来当表的范围
char list[maxn][26];//行 列 制表
memset(list,' ',sizeof(list));// 先使表全是' '
for(int j=0;j<26;j++)
for(int i=maxn-1;i>=0&&num[j]>0;i--)
{
list[i][j]='*';//从下往上打印'*'
num[j]--;//字母数-1
}
for(int i=0;i<maxn;i++)
{
for(int j=0;j<26;j++)
{
cout<<list[i][j];//输出表
if(j!=25)cout<<' ';
}
cout<<endl;
}
cout<<"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";//输出字母
return 0;
}