UVA-11286 Conformity

本文描述了一个编程问题,涉及Waterloo大学新生如何根据选择的课程组合来决定最受欢迎的课程。通过统计每个组合出现的人数,找出拥有最多学生的组合作为最受欢迎的课程组合作为输出。
摘要由CSDN通过智能技术生成

 

內容

Waterloo大學的新鮮人由於興趣不同,對於課程的選擇不盡相同,而校方希望他們所選的課程盡量一致,所以設立了一個獎項,頒發給 選擇的「課程組合」為「最受歡迎的課程組合」的學生。

輸入說明

輸入有多組測試資料,每組資料的開頭有一個整數 n 表示新生的人數( 1 <= n <= 10000 ),接下來有 n 列分別為這些新生所選擇的課程代號,每列有 5 個表示課程代號的整數,其值介於 100 ~ 499。當 n = 0 表示測試資料結束。

輸出說明

一組課程的受歡迎程度視所有剛好選擇該組課程的學生人數而定,如果沒有其他「課程組合」的人數比此「課程組合」的人數高,則該課程為最 受歡迎的「課程組合」,請對每組測試資料輸出選擇最受歡迎的「課程組合」的人數。

範例輸入 #1
3
100 101 102 103 488
100 200 300 101 102
103 102 101 488 100
3
200 202 204 206 208
123 234 345 456 321
100 200 300 400 444
0
範例輸出 #1
2
3
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

int main()
{
    int n;
    while (cin >> n)
    {
        if (n == 0)
            break;

        map<string, int> ans;
        vector<int> v(5);
        int maxCount = 0;

        for (int i = 0; i < n; i++)
        {

            for (int j = 0; j < 5; j++)
                cin >> v[j];

            sort(v.begin(), v.end());

            string temp;
            for (int j = 0; j < 5; j++)
                temp += to_string(v[j]);

            ans[temp]++;
            maxCount = max(maxCount, ans[temp]);
        }

        int total = 0;

        for (auto it = ans.begin(); it != ans.end(); ++it)
        {
            if (it->second == maxCount)
                total += it->second;
        }

        cout << total << endl;
    }

    return 0;
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值