# 題目: UVa 11286 – Conformity

# 題目說明

Waterloo 大學的新生因為興趣不同,而選擇不同的課
但學校希望他們選的課能盡量一樣,所以設置了一個獎項

  • 最受歡迎的課程組合
    寫一個程式找出最受歡迎的課程組合

INPUT:
每筆資料第一行為一個整數 n ,代表學生人數
接下來會有 n 行,每行有五個整數,代表選的課程
n0 時結束程式


OUTPUT:
輸出最受歡迎的課程組合的人數
如果有多個最受歡迎的課程組合,則將人數加總

# 解題方法

先將每個課程組合排序,之後連接起來存入 string
string 存入 map 計算數量,數量最多的組合即為最受歡迎的課程組合

# 參考程式碼

#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
	int n, max_num, total;
	map<string, int> course;
	vector<string> class_num;
	string input, line;
	while (cin >> n && n != 0) {
		max_num = 0;
		total = 0;
		course.clear();	
		while (n--) {
			line.clear();
			class_num.clear();
			for (int i = 0; i < 5; ++i) cin >> input, class_num.push_back(input);
			sort(class_num.begin(), class_num.end());
			for (int i = 0; i < 5; ++i) line += class_num[i];
			++course[line];
		}
		
		for (auto it = course.begin(); it != course.end(); ++it)
			if (it->second > max_num) max_num = it->second;
		for (auto it = course.begin(); it != course.end(); ++it)
			if (it->second == max_num) total += max_num;
			
		cout << total << endl;
	}
	
	return 0;
}