评测记录
代码
#include<iostream>
using namespace std;
int main(){
int num[27]={0},maxx;
char star[101][101];
string tmp1,tmp2,tmp3,tmp4;
//getline:此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中
getline(cin,tmp1);
getline(cin,tmp2);
getline(cin,tmp3);
getline(cin,tmp4);
//计数
for(int i=0;i<tmp1.size();i++){ //i:y轴 j:x轴
if(tmp1[i]>='A'&&tmp1[i]<='Z'){
num[tmp1[i]-'A'+1]++;
}
}
for(int i=0;i<tmp2.size();i++){
if(tmp2[i]>='A'&&tmp2[i]<='Z'){
num[tmp2[i]-'A'+1]++;
}
}
for(int i=0;i<tmp3.size();i++){
if(tmp3[i]>='A'&&tmp3[i]<='Z'){
num[tmp3[i]-'A'+1]++;
}
}
for(int i=0;i<tmp4.size();i++){
if(tmp4[i]>='A'&&tmp4[i]<='Z'){
num[tmp4[i]-'A'+1]++;
}
}
//比较
for(int i=1;i<=26;i++){
maxx=max(maxx,num[i]);
}
//字符注入
for(int i=1;i<=26;i++){
for(int j=maxx;j>=maxx-num[i]+1;j--){
star[j][i]='*'; //加星号
}
for(int j=maxx-num[i];j>=1;j--){
star[j][i]=' '; //加空格
}
star[maxx+1][i]=i+'A'-1;
}
for(int i=1;i<=maxx+1;i++){
for(int j=1;j<=51;j++){
if(j%2==0){
cout<<" "; //加空格
continue;
}
cout<<star[i][j/2+1];
}
cout<<endl;
}
return 0;
}
本地终端
➜ 日常练习 git:(master) ✗ cd "/mnt/Data/学习资料/高中/NOIP/日常练习/" && g++ 洛谷P1598.cpp -o 洛谷P1598 && "/mnt/Data/学习资料/高中/NOIP/日常练习/"洛谷P1598
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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