简单重集和查找应用
#include <stdio.h>
#include <algorithm>
#include <set>
using namespace std;
#define MAX_LEN 1000
int code[MAX_LEN];
int answer[MAX_LEN];
int case_count;
void func(int len)
{
int a, b;
int i;
multiset<int> s;
a = b =0;
for(i=0; i<len; i++)
{
if(code[i] == answer[i])
{
a++;
answer[i] = -1;
}
else
{
s.insert(code[i]);
}
}
for(i=0; i<len; i++)
{
if(answer[i] != -1)
{
if(s.find(answer[i]) != s.end())
{
b++;
s.erase(s.find(answer[i]));
}
}
}
printf(" (%d,%d)\n", a, b);
}
int main(void)
{
int len;
int i, sum;
case_count = 0;
while(1)
{
scanf("%d", &len);
if(!len)
break;
for(i=0; i<len; i++)
{
scanf("%d", code+i);
}
case_count ++;
printf("Game %d:\n", case_count);
while(1)
{
sum = 0;
for(i=0; i<len; i++)
{
scanf("%d", answer+i);
sum += answer[i];
}
if(!sum)
break;
func(len);
}
}
}