题解:洛谷 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 
posted @ 2026-02-17 08:29  团爸讲算法  阅读(5)  评论(0)    收藏  举报