UVA340 MasterMind Hints

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=276

实在没读懂题意 搜的意思 真佩服UVA的表达能力

输入n,表示每个代码的长度为n;输入有多组数据,当n=0时表示结束;而在每组中,以最后输n0结束。对于每组数据,第一行编码为出题者的(S1,S2,...,Sn),接下来的为猜测者的编码(g1,g2,g3,...gn)。若Si=gj并且i=j,你将得到个A;若Si=gji≠j,你将得到B程序先从1找到n找能得到多少A,然后在找能得到多少B。注意:对于每个Si,gj只能使用一次。然后输出A,B的个数以(X,Y)形式。(XAYB)。

题很好做

 

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 int o[11],x[1001];
 4 int main()
 5 {
 6     int i, j,k[101] ,n,m[101],g,f,a[1001],w = 0;
 7     while(scanf("%d",&n)&&n)
 8     {
 9         w++;
10         f = 0;
11         memset(k,0,sizeof(k));
12         memset(m,0,sizeof(m));
13         for(j = 1 ; j <= n ; j++)
14         {
15             scanf("%d", &x[j]);
16             o[x[j]]++;
17         }
18         for(j = 1 ;;j++)
19         {
20             memset(o,0,sizeof(o));
21 
22             for(i = 1 ; i <= n ; i++)
23             o[x[i]]++;
24             for(i = 1 ; i <= n ; i++)
25             {
26                 scanf("%d", &a[i]);
27                 if(!a[i])
28                 {
29                     f = 1;
30                 }
31                 if(a[i]==x[i])
32                 {
33                     o[a[i]]--;
34                     a[i] = 0;
35                     k[j]++;
36                 }
37             }
38             for(i = 1 ; i <= n ; i++)
39                 if(o[a[i]])
40                 {
41                     m[j]++;
42                     o[a[i]]--;
43                 }
44             if(f)
45             break;
46         }
47         printf("Game %d:\n",w);
48         for(i = 1 ; i < j ; i++)
49         printf("    (%d,%d)\n",k[i],m[i]);
50     }
51     return 0;
52 }

 

 

原文地址:https://www.cnblogs.com/shangyu/p/2598901.html