爲什麼要加星號?因爲這道題的算法和書上大致上是差不多的,不一樣的地方是我把輸入數組換成讀入的時候統計而已
但是在oj上一直通不過,這我就很懵逼了,也不想把書上的代碼打一遍,反正基本上差不多,自己對照一下書上吧
至於爲什麼是取最小的一個?應該是“同時出現”,所以取比較小的數據相加得到數字的貢獻
PS:如果發現代碼有哪裏出現問題請在評論裏聯繫我,謝謝,因爲我自己也不知道哪裏的問題,oj上的測試數據也都可以過,我已經糾結了兩天
放代碼:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a[11],b[11],c[11],cnt=0,tmp;
int main()
{
while((scanf("%d",&n))==1&&n)
{
memset(a,0,sizeof(c));
memset(b,0,sizeof(b));
printf("Game %d:\n", ++cnt);
for(int i = 0;i<n;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(;;)
{
memset(c,0,sizeof(c));
int sign = 1;
int x=0,y=0,c1=0,c2=0;
for(int i = 0;i<n;i++)
{
cin>>tmp;
if(tmp==0){sign = 0;}
for(int j = 0;j<n;j++)
if(a[j]==tmp&&i==j) x++;
c[tmp]++;
}
for(int i = 1;i<=9;i++)
y+=min(b[i],c[i]);
if(!sign) break;
printf(" (%d,%d)\n", x,y-x);
}
}
return 0;
}