HDU2708 Vertical Histogram

HDU2708 Vertical Histogram

using namespace std;
#include<iostream>
struct letter{
	int num;
	char l;
};
int main()
{
	char c[4][80];
	letter L[26];
  while(gets(c[0]))
  {
  	   gets(c[1]);
  	   gets(c[2]);
  	   gets(c[3]);
  	for(int i = 0;i<26;i++)
	{
		L[i].l = 'A'+i;
		L[i].num = 0;
	}
	for(int i = 0;i<4;i++)
	{
		for(int j = 0;c[i][j];j++)
		{
			for(int k = 0;k<26;k++)
			{
				if(c[i][j] == L[k].l)
				L[k].num++;
			}
		}
	}

	int maxrow=0,maxline = 0;
	
	for(int i = 0;i<26;i++)   // 找出行数 
	{
		if(L[i].num>=maxline)
		{
			maxline = L[i].num;
		}
	}


	for(int k = 0;k<maxline;k++)
	{
		for(int i = 0;i<26;i++) //找出最大列 
	{
		if(L[i].num>=maxline-k)
		    maxrow = i;
	}
	   for(int m = 0;m<=maxrow;m++)
	   {
	   	if(L[m].num>=maxline-k)
	   	{
	   		cout<<"*";
	   		if(m<maxrow)
	   		cout<<" ";
		   }
		   else{
		   	cout<<" ";
		   	if(m<maxrow)
	   		cout<<" ";
		   }
	   }
	   cout<<endl;
	}
	for(int i = 0;i<26;i++)  //输出字母 
	{
		cout<<L[i].l;
		if(i<25)
		cout<<" ";
	}
	cout<<endl;
  	
   } 

   return 0 ;   
}

刚开始以为数量为0的字母不用输出,后来才发现都需要输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值