题解:
题意书上已经有了,做的时候用了map来保存没有匹配上的数字,简单模拟题,代码如下
#include <cstdio> #include <iostream> #include <string> #include <cstring> #include <algorithm> #include <map> using namespace std; int code[1010]; int main() { //freopen("in.txt","r",stdin); //freopen("output.txt","w",stdout); int n; int rnd = 0; while(scanf("%d",&n) == 1 && n){ for(int i = 0; i < n; i++){ scanf("%d",&code[i]); } int num; printf("Game %d:\n",++rnd); while(scanf("%d",&num) == 1){ int tmp[1010]; memset(tmp,0,sizeof(tmp)); map<int,int> g; int sto = 0,wea = 0; if(num == code[0]){sto++; tmp[0] = 1;} else g[num] = 1; for(int i = 1; i < n; i++){ scanf("%d",&num); if(num == code[i]){sto++; tmp[i] = 1;} else g[num] = g.count(num)?g[num]+1:1; //cout << g[num] << endl; } if(num == 0) break; for(int i = 0; i < n; i++){ if(tmp[i] == 1) continue; if(g.count(code[i]) && g[code[i]]) {wea += 1;g[code[i]]--;} } printf(" (%d,%d)\n",sto,wea); } } return 0; }