PKU 2136 Vertical Histogram

http://poj.org/problem?id=2136
大文字とその他の文字からなる4行の文字列が与えられるので、アルファベットの出現頻度に関するヒストグラムを作成しろというような問題。

表示形式に気を配る。

int out[26];
int num[26];

main(){
  string in;
  int m=0;
  rep(i,4){
    getline(cin,in);
    rep(j,in.size()){
      if(isalpha(in[j])){
	m=max(m,++num[in[j]-'A']);
      }
    }
  }


  for(int i=300;i>=1;i--){
    bool ok=false;
    memset(out,0,sizeof(out));
    rep(j,26){
      if(num[j]>=i){
	out[j]=true;
	ok=true;
      }
    }

    if(ok){
      int pos=25;
      for(;pos>=0;pos--){
	if(out[pos])break;
      }
      rep(j,pos+1){
	if(j)cout<<' ';
	if(out[j])cout<<'*';
	else cout<<' ';
      }
      cout<<endl;
    }
  }

  rep(i,26){
    if(i)cout<<' ';
    cout<<char(i+'A');
  }
  cout<<endl;
}