題目連結: https://zerojudge.tw/ShowProblem?problemid=b265

# 解題思路

運用 map 將課程的選擇狀況都記錄下來,找出出現最多次數的就好啦!!
(紀錄的時候統一由小而大排會比較方便喔!!)
(是說,string 也有自動排序跟加法,可以試看看)

# 程式碼

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    while(cin>>n && n){
        string cls[5];
        map<string,int> M;
        string buf;
        for(int i=0;i<n;i++){
            for(int j = 0;j<5;j++)
                cin>>cls[j];
            sort(cls,cls+5);
            string s;
            for(int j=0;j<5;j++)
                s+=cls[j];
            M[s]++;
        }
        int ans=0,Max=0;
        for(map<string,int>::iterator it=M.begin();it!=M.end();it++)
        {
            if((it->second)>Max)
                Max=it->second, ans=0;
            if((it->second)==Max)
                ans+=Max;
        }
        cout<<ans<<endl;
    }
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay