程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 2136 Vertical Histogram 打印特殊圖形

POJ 2136 Vertical Histogram 打印特殊圖形

編輯:C++入門知識

POJ 2136 Vertical Histogram 打印特殊圖形


根據題目要求打印出需要的輸出格式。

這算是些趣味題目了,題目本身不難,要說難點就是考如何優雅地去編程了,主要是考編程基礎功力。

而且好像測試系統不是十分嚴格,並不判斷後面多余的空格,按題目要求是需要嚴格去掉後面多余的空格的。

處理這個問題就需要多點代碼了。

下面看我使用一個額外的數組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;
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved