pku 1013 Counterfeit Dollar

本文介绍了一个通过三次比较找出12枚硬币中唯一一枚假币的算法实现。使用枚举方法,根据不同的比较结果判断假币及其轻重。代码示例采用C语言编写,展示了如何通过一系列条件判断来确定哪一枚硬币为假。

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

http://acm.pku.edu.cn/JudgeOnline/problem?id=1013
找出假币问题,输入三次数据以及结果、然后找出哪个币是假的。枚举
#include <stdio.h>
#include <string.h>

char left[3][7],right[3][7],result[3][5];

bool isLight(char x)
{
 int i;
 for(i = 0;i < 3;i ++)
 {
  switch(result[i][0])
  {
  case 'u':
   if(strchr(right[i],x) == NULL)
    return false;
   break;
  case 'e':
   if(strchr(right[i],x) != NULL || strchr(left[i],x) != NULL)
    return false;
   break;
  case 'd':
   if(strchr(left[i],x) == NULL)
    return false;
   break;
  }
 }
 return true;
}

bool isHeavy(char x)
{
 int i;
 for(i = 0;i < 3;i ++)
 {
  switch(result[i][0])
  {
  case 'u':
   if(strchr(left[i],x) == NULL)
    return false;
   break;
  case 'e':
   if(strchr(right[i],x) != NULL || strchr(left[i],x) != NULL)
    return false;
   break;
  case 'd':
   if(strchr(right[i],x) == NULL)
    return false;
   break;
  }
 }
 return true;
}

int main()
{
 int time,i;
 char c;
 scanf("%d",&time);
 while(time --)
 {
  for(i = 0;i < 3;i ++)
   scanf("%s%s%s",left[i],right[i],result[i]);
  for(c = 'A';c <= 'L'; c ++)
  {
   if(isLight(c))
   {
    printf("%c is the counterfeit coin and it is light./n",c);
    break;
   }
   if(isHeavy(c))
   {
    printf("%c is the counterfeit coin and it is heavy./n",c);
    break;
   }
  }
 }
 return 0 ;
}

/*
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even

 

K is the counterfeit coin and it is light.
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值