日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷 P1598 垂直柱状图【字符串】

發布時間:2024/10/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P1598 垂直柱状图【字符串】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

寫一個程序從輸入文件中去讀取四行大寫字母(全都是大寫的,每行不超過72個字符),然后用柱狀圖輸出每個字符在輸入文件中出現的次數。嚴格地按照輸出樣例來安排你的輸出格式。

輸入輸出格式

輸入格式:

?

四行字符,由大寫字母組成,每行不超過72個字符

?

輸出格式:

?

由若干行組成,前幾行由空格和星號組成,最后一行則是由空格和字母組成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。

?

輸入輸出樣例

輸入樣例#1:?復制 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. THIS IS AN EXAMPLE TO TEST FOR YOUR HISTOGRAM PROGRAM. HELLO! 輸出樣例#1:?復制 *** ** * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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

說明

每行輸出后面不允許出現多余的空格。

?

【分析】:注意數組要開大一點!一路掃過去,把所有單詞出現的次數記錄下來,然后模擬一個輸出。

【代碼】:

#include<cstdio> #include<bits/stdc++.h> #include<cstring> #include<algorithm> using namespace std; int cnt[500];//定義計數數組 string a; int main() {int i,j,n,maxn=0;//char a[200];for(i=0;i<4;i++){getline(cin,a);//gets讀入// n=strlen(a);for(j=0;j<a.length();j++)if(a[j]>='A'&&a[j]<='Z')cnt[a[j]-'A']++;//統計字符出現次數 }for(i=0;i<26;i++)maxn=max(maxn,cnt[i]);//最多次數(最高柱狀圖)for(i=maxn;i>0;i--){for(j=0;j<26;j++)if(cnt[j]>=i)printf("* ");elseprintf(" ");//模擬,是可以輸出的就輸出*,否則跳過printf("\n");}//換行/*for(i=0;i<26;i++)printf("%c ",i+'A');//輸出a~z*/for(char i='A';i<'Z';i++)cout << i << " ";//輸出A-Y,后面都有一個空格cout << "Z";//輸出Z,后面沒有空格 } 模擬

?

#include <iostream> #include <cstring> #include <map> using namespace std; int main() {string s;//輸入變量int i,j,len,max=0;char k;//len長度,max為最多數(高度)map<char,int> zm;//定義一個char到int的map變量,存儲字母出現個數for (k='A';k<='Z';k++) zm[k]=0;//A~Z分別設初值為0for (i=0;i<4;i++)//4行 {getline (cin,s);//讀取一行len=s.size();///求取長度for (j=0;j<len;j++) zm[s[j]]++;//每個字母個數加一 }for (k='A';k<='Z';k++) if (max<zm[k]) max=zm[k];//求高度for (;max;max--){for (k='A';k<='Z';k++) if (max<=zm[k]) cout<<"* ";else cout<<" ";//若該高度該字母達到,則輸出* ;否則輸出 ;cout<<endl;//換行 }for (k='A';k<='Z';k++) cout<<k<<' ';//看各位輸出都可復雜,直接這樣不就行了嗎(從A 到Z )return 0; } View Code 2

?

轉載于:https://www.cnblogs.com/Roni-i/p/7730705.html

總結

以上是生活随笔為你收集整理的洛谷 P1598 垂直柱状图【字符串】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。