题解:洛谷 P1271 【深基9.例1】选举学生会
【题目来源】
洛谷:P1271 【深基9.例1】选举学生会 - 洛谷 (luogu.com.cn)
【题目描述】
学校正在选举学生会成员,有 \(n(n\le 999)\) 名候选人,每名候选人编号分别从 \(1\) 到 \(n\),现在收集到了 \(m(m\le 2000000)\) 张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。
【输入】
输入 \(n\) 和 \(m\) 以及 \(m\) 个选票上的数字。
【输出】
求出排序后的选票编号。
【输入样例】
5 10
2 5 2 2 5 2 2 2 1 2
【输出样例】
1 2 2 2 2 2 2 2 5 5
【算法标签】
《洛谷 P1271 选举学生会》 #排序#
【代码详解】
#include <bits/stdc++.h> // 包含标准库中的所有头文件
using namespace std; // 使用标准命名空间
int main()
{
int n, m, t, a[1005] = {0}; // 定义变量n, m, t和一个大小为1005的数组a,并初始化为0
cin >> n >> m; // 输入n和m,n表示数字的范围,m表示输入的数字个数
// 循环m次,读取每个数字t,并在数组a中对应的位置计数
for (int i = 0; i < m; i++) {
cin >> t; // 输入数字t
a[t]++; // 在数组a中,将t对应的位置的值加1
}
// 遍历数组a,从1到n,输出每个数字i,输出次数为a[i]的值
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= a[i]; j++) {
cout << i << " "; // 输出数字i,并在后面加一个空格
}
}
return 0; // 程序正常结束
}
【运行结果】
5 10
2 5 2 2 5 2 2 2 1 2
1 2 2 2 2 2 2 2 5 5
浙公网安备 33010602011771号