ACM2.4

Let the Balloon Rise----hdu-1004

Problem Description

Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When the contest is over, they will count the balloons of each color and find the result.
This year, they decide to leave this lovely job to you.

Input

Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) -- the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.

A test case with N = 0 terminates the input and this test case is not to be processed.

Output

For each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.

Sample Input

5
green
red
blue
red
red
3
pink
orange
pink
0

Sample Output

red
pink

問(wèn)題簡(jiǎn)述

存在多種顏色的氣球,第一行輸入“N”代表氣球的數(shù)量,余下N行每輸入由“1~15”個(gè)字母組成的顏色慰于。然后輸出最受歡迎的顏色,即出現(xiàn)次數(shù)最多的顏色退盯。當(dāng)“N=0”時(shí)終止程序。

程序分析

此題為map函數(shù)的入門水題泻肯,推薦用map函數(shù)做渊迁。
有關(guān)map函數(shù)知識(shí)簡(jiǎn)略如下:
map函數(shù)為key_value型。例如:map<string,int>choose 其中key對(duì)應(yīng)string灶挟,value對(duì)應(yīng)int琉朽。

1. map最基本的構(gòu)造函數(shù);

map<string , int >mapstring; map<int ,string >mapint;
map<sring, char>mapstring; map< char ,string>mapchar;
map<char ,int>mapchar; map<int ,char >mapint膏萧;

2. map添加數(shù)據(jù)漓骚;
   map<int ,string> maplive;  
   1.maplive.insert(pair<int,string>(102,"aclive"));
   2.maplive.insert(map<int,string>::value_type(321,"hai"));
   3, maplive[112]="April";//map中最簡(jiǎn)單最常用的插入添加蝌衔!

3榛泛,map中元素的查找:

find()函數(shù)返回一個(gè)迭代器指向鍵值為key的元素,如果沒(méi)找到就返回指向map尾部的迭代器噩斟。

   map<int ,string >::iterator l_it;; 
   l_it=maplive.find(112);
   if(l_it==maplive.end())
                cout<<"we do not find 112"<<endl;
   else cout<<"wo find 112"<<endl;

4,map中元素的刪除:
如果刪除112曹锨;

   map<int ,string >::iterator l_it;;
   l_it=maplive.find(112);
   if(l_it==maplive.end())
        cout<<"we do not find 112"<<endl;
   else  maplive.erase(l_it);  //delete 112;

5,map中 swap的用法:
Map中的swap不是一個(gè)容器中的元素交換,而是兩個(gè)容器交換剃允;
For example:

  #include <map>
  #include <iostream>

  using namespace std;

  int main( )
  {
      map <int, int> m1, m2, m3;
      map <int, int>::iterator m1_Iter;

      m1.insert ( pair <int, int>  ( 1, 10 ) );
      m1.insert ( pair <int, int>  ( 2, 20 ) );
      m1.insert ( pair <int, int>  ( 3, 30 ) );
      m2.insert ( pair <int, int>  ( 10, 100 ) );
      m2.insert ( pair <int, int>  ( 20, 200 ) );
      m3.insert ( pair <int, int>  ( 30, 300 ) );

   cout << "The original map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter->second;
      cout   << "." << endl;

   // This is the member function version of swap
   //m2 is said to be the argument map; m1 the target map
   m1.swap( m2 );

   cout << "After swapping with m2, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout  << "." << endl;
   cout << "After swapping with m2, map m2 is:";
   for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout  << "." << endl;
   // This is the specialized template version of swap
   swap( m1, m3 );

   cout << "After swapping with m3, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout   << "." << endl;
}

6.map的sort問(wèn)題:
Map中的元素是自動(dòng)按key升序排序,所以不能對(duì)map用sort函數(shù):
For example:

  #include <map>
  #include <iostream>

  using namespace std;

 int main( )
 {
   map <int, int> m1;
   map <int, int>::iterator m1_Iter;

   m1.insert ( pair <int, int>  ( 1, 20 ) );
   m1.insert ( pair <int, int>  ( 4, 40 ) );
   m1.insert ( pair <int, int>  ( 3, 60 ) );
   m1.insert ( pair <int, int>  ( 2, 50 ) );
   m1.insert ( pair <int, int>  ( 6, 40 ) );
   m1.insert ( pair <int, int>  ( 7, 30 ) );

   cout << "The original map m1 is:"<<endl;
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout <<  m1_Iter->first<<" "<<m1_Iter->second<<endl;
  
}
  The original map m1 is:
  1 20
  2 50
  3 60
  4 40
  6 40
  7 30
  請(qǐng)按任意鍵繼續(xù). . .

7, map的基本操作函數(shù):
C++ Maps是一種關(guān)聯(lián)式容器斥废,包含“關(guān)鍵字/值”對(duì)

   begin()          返回指向map頭部的迭代器
  clear()        刪除所有元素
  count()          返回指定元素出現(xiàn)的次數(shù)
 empty()          如果map為空則返回true
  end()            返回指向map末尾的迭代器
 equal_range()    返回特殊條目的迭代器對(duì)
  erase()          刪除一個(gè)元素
  find()           查找一個(gè)元素
  get_allocator()  返回map的配置器
  insert()         插入元素
  key_comp()       返回比較元素key的函數(shù)
  lower_bound()    返回鍵值>=給定元素的第一個(gè)位置
  max_size()       返回可以容納的最大元素個(gè)數(shù)
  rbegin()         返回一個(gè)指向map尾部的逆向迭代器
  rend()           返回一個(gè)指向map頭部的逆向迭代器
  size()           返回map中元素的個(gè)數(shù)
  swap()            交換兩個(gè)map
  upper_bound()     返回鍵值>給定元素的第一個(gè)位置
  value_comp()      返回比較元素value的函數(shù)

AC程序如下:

//hdu-1004
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
    string color, maxcolor;
    int N;
    map<string, int>choose;//聲明一個(gè)map容器choose
    while (cin >> N&&N!=0)//當(dāng)N=0時(shí)結(jié)束
    { 
        int max = 0;
        choose.clear();//刪除choose中所以元素
        for (int i = 0; i < N; i++)
        {  
            cin >> color;
            choose[color]++;//若key不同椒楣,則創(chuàng)建一個(gè)新的map元素。若key值相同牡肉,則該key元素的value加一
        }
        map<string, int>::iterator G;//聲明一個(gè)迭代器G
        for (G = choose.begin(); G != choose.end(); G++)
        {
            if ((G->second) > max)
            {
                max = (G->second);
                maxcolor = (G->first);
            }
        }
        cout << maxcolor << endl;
    }
    
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捧灰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子统锤,更是在濱河造成了極大的恐慌毛俏,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饲窿,死亡現(xiàn)場(chǎng)離奇詭異煌寇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)逾雄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門阀溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腻脏,“玉大人,你說(shuō)我怎么就攤上這事淌哟〖B” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵徒仓,是天一觀的道長(zhǎng)腐碱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)掉弛,這世上最難降的妖魔是什么症见? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮殃饿,結(jié)果婚禮上谋作,老公的妹妹穿的比我還像新娘。我一直安慰自己乎芳,他們只是感情好遵蚜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奈惑,像睡著了一般吭净。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肴甸,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天寂殉,我揣著相機(jī)與錄音,去河邊找鬼原在。 笑死友扰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庶柿。 我是一名探鬼主播村怪,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浮庐!你這毒婦竟也來(lái)了甚负?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兔辅,失蹤者是張志新(化名)和其女友劉穎腊敲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體维苔,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碰辅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了介时。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没宾。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凌彬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出循衰,到底是詐尸還是另有隱情铲敛,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布会钝,位于F島的核電站伐蒋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迁酸。R本人自食惡果不足惜先鱼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奸鬓。 院中可真熱鬧焙畔,春花似錦、人聲如沸串远。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)澡罚。三九已至伸但,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間始苇,已是汗流浹背砌烁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工筐喳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留催式,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓避归,卻偏偏與公主長(zhǎng)得像荣月,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梳毙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容