範例程�碼 uva11286
//uva11286
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <cstdio>
#define NUM 5
#define LEN 20
using namespace std;
// §PÂ_¤j¤p¨ç¦¡ - ¨Ñ max_element() ¨Ï¥Î
bool isBig(map<string, int>::value_type &a, map<string, int>::value_type &b) {
return (a.second < b.second);
}
int main() {
int dataNum, courseNum[NUM], ans;
map<string, int> course;
map<string, int>::iterator max;
char numInChar[LEN];
string numInString;
while(cin >> dataNum) { // ¨ú±o¾Ç¥Í¤H¼Æ
if(dataNum == 0)
break;
// initialize
ans = 0; // ¬ö¿ý³Ì²×µª®×
course.clear(); // «O¦s©Ò¦³¥X²{¹Lªº½Òµ{²Õ¦X + ¿ï¾Ü¸Ó½Òµ{²Õ¦Xªº¤H¼Æ
for(int d = 0; d < dataNum; d++) {
// ¨ú±o½Òµ{½s¸¹
for(int i = 0; i < NUM; i++)
cin >> courseNum[i];
// ±Æ§Ç¹L¤~¯à§PÂ_½s¸¹¬O§_¤@P
sort(courseNum, courseNum + NUM);
// ±q int °}¦CÂন char °}¦C¦AÂন string
sprintf(numInChar, "%d%d%d%d%d", courseNum[0], courseNum[1], courseNum[2], courseNum[3], courseNum[4]);
numInString = numInChar;
// §PÂ_ map ¤¤¬O§_¤w¥X²{¹L
if(course.find(numInChar) == course.end())
course[numInString] = 1; // ¥¼¥X²{«h¼Ð 1
else
course[numInString]++; // ¤w¥X²{«h²Ö¥[
}
// §ä¥X³Ì¦h¤H¿ïªº½Òµ{²Õ¦X¦³´XÓ¤H¿ï
max = max_element(course.begin(), course.end(), isBig);
// §ä¥X©Ò¦³³Ì¦h¤H¿ïªº½Òµ{²Õ¦X¨Ã²Îp¨ä¤H¼Æ
for(map<string, int>::iterator it = course.begin(); it != course.end(); it++) {
if((*it).second == (*max).second)
ans += (*max).second;
}
// ¿é¥X³Ì²×µª®×
cout << ans << endl;
}
return 0;
}