解いた問題のソースコードと解説など。


POJ 2418 Hardwood Species

問題

木の名前がいくつか入力される。各木の種類について、それが入力された総数のうち何%を占めているか木の名前のアルファベット順にパーセンテージで出力せよ。

やりかた

mapに木の名前と出現数を入れて総数で割って、、、というだけ。入力はgetsを使えば余裕で通る。

以下ソース。

int main(int argc, char **argv){
  char tree[256];
  map<string, int> p;
  int num = 0;
  while(gets(tree)){
    p[string(tree)]++;
    num++;
  }
  map<string, int>::iterator it = p.begin();
  for(; it != p.end(); it++)
    printf("%s %.4f\n", (it->first).c_str(), it->second * 100.0 / num);
  return 0;
}

atetubouさんによればgetlineでも通ったそうです。
PKU 2418 Hardwood Species - 日記

しょげないでよBaby 眠れば治る