C++Map练习 HDOJ1004 Let the Balloon Rise

Let the Balloon Rise

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

//AC的代码
#include 
#include 
#include 
#include 
#include 

using namespace std;
int main()
{
	int n;
	while (cin >> n)
	{
		if (n == 0)
		{
			break;
		}
		map bal;//声明一个map,键值是string类型的,value是int类型的
		map::iterator it;//迭代器
		string s;
		for (int i = 0; i < n; i++)
		{
			cin >> s;
			it = bal.find(s);//查找map中是否存在s键值,不存在返回end()返回类型
			if (it != bal.end())
			{
				bal[s] ++;//存在,value值加1
			}
			else
			{
				bal[s] = 1;//不存在插入
			}
		}
		int num = -1;
		string s1;
//迭代器循环遍历
		for (map::iterator l = bal.begin();l != bal.end();l++)
		{
//利用bal->first访问key值,利用bal->second访问value值
			if (l->second > num)
			{
				num = l->second;
				s1 = l->first;
			}
		}
		cout << s1 << endl;
	}
	system("pause");
	return 0;
}

map是c++中STL的一种,其数据存储的底层数据结构是红黑树,且数据是根据key值进行拍好顺序的,不会有重复的key值。

头文件是

map中主要有一下方法:

(1)插入:(有三种方法进行插入)

map m;

m[key] = value;//第一种

m.insert(map::value_type(key,value));//第二种

map v(key,value);//第三种

m.insert(v);

(2)查找:find()

查找是否存在键值为key的元素,如果存在则返回元素的指针,否则返回m.end()

map m;
m.find(key);//查找是否存在键值为key的,如果存在则返回元素的指针,否则返回m.end()

(3)其他函数;

begin()          返回指向map头部的迭代器
clear()         删除所有元素
count()          返回指定元素出现的次数
empty()          如果map为空则返回true
end()            返回指向map末尾的迭代器
erase()          删除一个元素
key_comp()       返回比较元素key的函数
lower_bound()    返回键值>=给定元素的第一个位置
max_size()       返回可以容纳的最大元素个数
rbegin()         返回一个指向map尾部的逆向迭代器
rend()           返回一个指向map头部的逆向迭代器
size()           返回map中元素的个数
swap()            交换两个map
upper_bound()     返回键值>给定元素的第一个位置
value_comp()      返回比较元素value的函数

 

 

 

有问题请留言,共同学习,共同成长... ...

你可能感兴趣的:(C++Map练习 HDOJ1004 Let the Balloon Rise)