POJ 2800:垂直直方圖
阿新 • • 發佈:2019-01-12
總時間限制:
1000ms
記憶體限制:
65536kB
描述
輸入4行全部由大寫字母組成的文字,輸出一個垂直直方圖,給出每個字元出現的次數。注意:只用輸出字元的出現次數,不用輸出空白字元,數字或者標點符號的輸出次數。
輸入
輸入包括4行由大寫字母組成的文字,每行上字元的數目不超過80個。
輸出
輸出包括若干行。其中最後一行給出26個大寫英文字母,這些字母之間用一個空格隔開。前面的幾行包括空格和星號,每個字母出現幾次,就在這個字母的上方輸出一個星號。注意:輸出的第一行不能是空行。
樣例輸入
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
程式碼
#include<stdio.h> int main(){ char a[4][81]; gets(a[0]); //獲取四行字串 gets(a[1]); gets(a[2]); gets(a[3]); int num[26],max=0; for(int i=0;i<26;i++){ num[i]=0; } for(int i=0;i<4;i++){ for(int j=0;j<81;j++){ if(a[i][j]=='\0') break; if(a[i][j]>='A'&&a[i][j]<='Z'){ num[a[i][j]-'A']++; } } } for(int i=0;i<26;i++){ if(max<num[i]) max=num[i]; } for(int i=0;i<max;i++){ for(int j=0;j<51;j++){ if(j%2==1) printf(" "); else{ if(i<max-num[(j+1)/2]) printf(" "); else printf("*"); } } printf("\n"); } for(int i=0;i<51;i++){ if(i%2==0){ printf("%c",('A'+i/2)); }else printf(" "); } return 0; }