UVa 340 - Master-Mind Hints
两个串相同位置的相同字符得到A
相同字符但不同位置得到B。
A优先于B,同一字符只能算一次
求A,B数
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 int a[1005],b[1005],c[1005],d[1005]; 6 int t,n,ans1,ans2; 7 bool flag; 8 int main(){ 9 t=1; 10 while(~scanf("%d",&n),n) 11 { 12 printf("Game %d:\n",t++); 13 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 14 while(1) 15 { 16 flag=1; 17 ans1=ans2=0; 18 for(int i=1;i<=n;i++) 19 { 20 scanf("%d",&b[i]); 21 if(b[i]) flag=0; 22 } 23 if(flag) break; 24 memset(c,0,sizeof(c)); 25 memset(d,0,sizeof(d)); 26 for(int i=1;i<=n;i++) 27 if(a[i]==b[i]) ans1++,d[i]=c[i]=1; 28 for(int i=1;i<=n;i++) 29 if(!d[i]) 30 for(int j=1;j<=n;j++) 31 { 32 if(!c[j]&&a[j]==b[i]) 33 { 34 ans2++; c[j]=d[i]=1; break; 35 } 36 } 37 printf(" (%d,%d)\n",ans1,ans2); 38 } 39 } return 0; 40 }
我自倾杯,君且随意