uva 340 Master-Mind Hints(水题)

本文介绍了一种用于统计两个字符串中相同数字数量的算法,并通过一个具体的C语言实现示例进行说明。该算法能够有效地计算出两个给定字符串中完全匹配的位置数(A)以及部分匹配的数字数(B),为字符串相似度计算提供了实用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击打开链接

直接在输入时统计A的数目即可,对于B,先统计1~9分别在目标串与比较串中出现的次数aa,bb,而且取小就是该数字对B的贡献,加起来

最终减去A即可。几个月前写时估计我是不理解求B的部分的,只是盲目的为了刷题而刷题,其实还是太急功近利。最近几个月心态很不

好,一度停滞不前甚至都没碰电脑,现在想想其实曾经带给我们的伤痛的事过去那段时间以后那都不是事,他们只是在教会我们成长而已。

从现在起,认认真真的对待自己做的每一件事,对自己负责。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define maxn 1001
int main()
{
   int a[maxn],b[maxn],i,j,k,n,cases = 0,d;

   while(~scanf("%d",&n) && n)
   {
       int comm = 0,c1 = 0;
       printf("Game %d:\n",++cases);//++cases而不是cases++;
       for(i = 0;i < n;i++)
            scanf("%d",&a[i]);
    for(;;)//输入多组b[];
    {
            for(i = 0;i < n;i++)
       {
           scanf("%d",&b[i]);
           if(b[i] == a[i])
             comm++;
       }
       if(b[0] == 0)    break;
       for(d = 1;d <= 9;d++)//统计数字D在a[]  b[]中出现的次数;
       {
           int  aa = 0,bb = 0;
           for(i = 0;i < n;i++)
           {
               if(a[i] == d) aa++;
               if(b[i] == d) bb++;
           }
           c1 += aa < bb ? aa : bb;//取二者较小的;
       }
       printf("    (%d,%d)\n",comm,c1 - comm);
       comm = 0;
       c1 = 0;

    }
   }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值