根據題目要求打印出需要的輸出格式。
這算是些趣味題目了,題目本身不難,要說難點就是考如何優雅地去編程了,主要是考編程基礎功力。
而且好像測試系統不是十分嚴格,並不判斷後面多余的空格,按題目要求是需要嚴格去掉後面多余的空格的。
處理這個問題就需要多點代碼了。
下面看我使用一個額外的數組spaceHeight[ALP_LEN[來解決這個問題,做到半個多余的空格符也沒有。
#include#include const int MAX_N = 75; const int ALP_LEN = 26; const int LINE_N = 4; short height[ALP_LEN]; short spaceHeight[ALP_LEN]; char chs[MAX_N]; inline int max(int a, int b) { return a > b ? a : b; } inline void getAlphaCount(char str[]) { int i = 0; while (str[i]) { if ('A' <= str[i] && str[i] <= 'Z') height[str[i]-'A']++; i++; } } int main() { while (gets(chs)) { memset(height, 0, sizeof(height)); getAlphaCount(chs); for (int i = 0; i < LINE_N-1; i++) { gets(chs); getAlphaCount(chs); } spaceHeight[ALP_LEN-1] = height[ALP_LEN-1]; for (int i = ALP_LEN-2; i >= 0; i--) { spaceHeight[i] = max(spaceHeight[i+1], height[i]); } for (int h = spaceHeight[0]; h > 0; h--) { for (int j = 0; j < ALP_LEN; j++) { if (spaceHeight[j] < h) break; if (j > 0) putchar(' '); if (height[j] < h) putchar(' '); else putchar('*'); } putchar('\n'); } for (int i = 0; i < ALP_LEN; i++) { if (i > 0) putchar(' '); putchar(char(i+'A')); } putchar('\n'); } return 0; }