UVA340 - Master-Mind 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 }

 

 

 

你可能感兴趣的:(master)