北大2136题

来源:互联网 发布:php 时间戳 精确 编辑:程序博客网 时间:2024/05/17 02:43

题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2136 

这道题就是个简单的哈希,然后是一个几何上的线段相交,相交就输出*,否则输出‘ ’。

#include <iostream>
using namespace std;

#define MAX 73
int main()
{
 freopen("in.txt","r",stdin);

 char input[MAX];
 bool flag = true;
 int i,j,max,count['Z'+1];
 while(true)
 {
  memset(count,0,sizeof(count));
  for(i = 0;i < 4;++i)
  {
   cin.getline(input,sizeof(input));
   if(strlen(input) == 0)
   {
    flag = false;
    break;
   }
   j = 0;
   while(input[j] != '/0')
   {
    if(input[j] >= 'A' && input[j] <= 'Z')
     ++count[input[j]];
    ++j;
   }
  }
  if(!flag)
   break;
  max = 0;
  for(i = 'A'; i <= 'Z';++i)
  {
   if(max < count[i])
    max = count[i];
  }

  bool first;
  for(i = max;i >= 1;--i)
  {
   first = true;
   for(j = 'A';j <= 'Z';++j)
   {
    if(first)
     first = false;
    else
     cout << ' ';

    if(count[j] >= i)
     cout << '*';
    else
     cout << ' ';
   }
   cout << endl;
  }
  cout << 'A';
  for(i = 'B';i <= 'Z';++i)
   cout << ' ' << char(i);
  cout << endl;
 }
 return 0;
}

原创粉丝点击