根据题目要求打印出需要的输出格式。
这算是些趣味题目了,题目本身不难,要说难点就是考如何优雅地去编程了,主要是考编程基础功力。
而且好像测试系统不是十分严格,并不判断后面多余的空格,按题目要求是需要严格去掉后面多余的空格的。
处理这个问题就需要多点代码了。
下面看我使用一个额外的数组spaceHeight[ALP_LEN[来解决这个问题,做到半个多余的空格符也没有。
#include <cstdio> #include <string.h> 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; }
POJ 2136 Vertical Histogram 打印特殊图形,布布扣,bubuko.com
时间: 2024-10-06 12:16:25