Bootstrap

HNU暑假集训1-众数

思路:用map作为存储结构会更加方便

map数组是键值对,每个键对应一个唯一的值

键可以是int ,float ,double,char,string,……或者自己创建的类型

值的数据类型也是一样

代码:

#include<bits/stdc++.h>
using namespace std;
struct node {
	int num;//数字
	int cnt;//数字出现的次数
};

//排序比较函数
bool cmp(node n1, node n2) {
	if (n1.cnt != n2.cnt) {
		return n1.cnt > n2.cnt;
	}
	else
	    return n1.num<n2.num;
}
int main() {
	int n;
	while (cin >> n && n) {//如果n==0, while循环终止
		map<int, int>nummap;//这里的map数组的键和值都是int类型,
		vector<int>v1(n);//用来排序
		vector<node>v2;
		for (int i = 0; i < n; i++) {
			cin >> v1[i];
			nummap[v1[i]]++;
       //如果map数组中已经有v1[i],v[i]对应的值++,否则先创建map[v[i]]再把map[v[i]]对应的值++

		}
		for (const auto& pair : nummap) {
			v2.push_back({ pair.first, pair.second });
		}
		// 按字典序对单词进行排序
		sort(v2.begin(), v2.end(), cmp);
		cout << v2[0].num << endl;

	}
	
}

用到map数组

大家可以自学map,以后的很多题目会用到
 

;