poj 2136||ECUST 1004 Vertical Histogram

应该算是简单题吧,只是格式有点坑爹。poj的2316相对就简单多了.

ecust的要求最后一个"*"打了后,后面就不要空格了,poj的没这要求,所以poj过了的在这题一般都会PE.囧....

做法是找到最后一个'*'

#include <stdio.h>//找到每行的最后一个*,,,pe无限。
#include <string.h>
int main()
{
	char ch;
	int i,j;
	int a[27],b[300][27],m[300];
	memset(a,0,sizeof(a));
	while(~scanf("%c",&ch))
		if(ch<='Z'&&ch>='A') a[ch-'A']++;
		int maxlen=0;
		for(i=0;i<26;i++)
		{
			if(a[i]>maxlen) maxlen=a[i];
		}
		for(i=0;i<26;i++)
			for(j=a[i];j>0;j--)
				b[j][i]=1;
		for(i=maxlen;i>0;i--)
			for(j=25;j>=0;j--)
			{if(b[i][j]==1) {m[i]=j;break;}}
		for(i=maxlen;i>0;i--)
		{
			for(j=0;j<=m[i];j++)
			{
				if(b[i][j]==1) printf("*");
				else printf(" ");
				if(j==m[i]) printf("\n");
				else printf(" ");
			}
		}
		for(i=0;i<25;i++)
			printf("%c ",(char)(i+'A'));
		printf("%c\n",(char)(i+'A'));
	return 0;
}


你可能感兴趣的:(poj 2136||ECUST 1004 Vertical Histogram)