我是传送门
赛利有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。
Input
第一行有一个数字n,表示有n组测试用例。
对于每组测试用例:
输入有三行,每行表示一次称量的结果。赛利事先将银币标号为A-L。每次称量的结果用三个以空格隔开的字符串表示:天平左边放置的硬币 天平右边放置的硬币 平衡状态。其中平衡状态用up'',down’’, 或 ``even’'表示, 分别为右端高、右端低和平衡。天平左右的硬币数总是相等的。
Output
输出哪一个标号的银币是假币,并说明它比真币轻还是重(heavy or light)。
Sample Input
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
Sample Output
K is the counterfeit coin and it is light.


分析:可能有多种情况,首先两边的硬币数量不都是4枚,是随机的。

  • 结果若为不平衡,其两边除了假币,其他的必须都要在另外的两次测量中出现过。
  • 十二枚中有的硬币可能没有被量过。
  • 那个不平衡的硬币可能出现在两次测量中。

ac代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[5][20],b[5][20],c[5][20];
int book[100];
int main()
{int t,i,l,q;scanf("%d",&q);while(q--){t=0;memset(book,0,sizeof(book));for(i=1;i<=3;i++){scanf("%s",a[i]);scanf("%s",b[i]);scanf("%s",c[i]);}for(i=1;i<=3;i++){if(c[i][0]=='e'){l=strlen(a[i]);for(int j=0;j<l;j++){book[a[i][j]]=100;//直接与假币问题,且后边互不影响 book[b[i][j]]=100;}}else if(c[i][0]=='d')//左轻右重 {t++;l=strlen(a[i]);for(int j=0;j<l;j++){book[a[i][j]]--;//-1代表轻的 book[b[i][j]]++;//+1代表重的 } }else if(c[i][0]=='u')//左重右轻 {t++;l=strlen(a[i]);for(int j=0;j<l;j++){book[a[i][j]]++;book[b[i][j]]--;} }    }for(i=0;i<=11;i++){if(book['A'+i]==t){printf("%c is the counterfeit coin and it is heavy.\n",'A'+i);  }else if(book['A'+i]==-t){printf("%c is the counterfeit coin and it is light.\n",'A'+i);  }}}
}

OpenJ_Bailian - 2692 假币问题相关推荐

  1. bailian.openjudge 2692:假币问题

    http://bailian.openjudge.cn/practice/2692 描述 赛利有12枚银币.其中有11枚真币和1枚假币.假币看起来和真币没有区别,但是重量不同.但赛利不知道假币比真币轻 ...

  2. Bailian2692 假币问题【暴力】

    2692:假币问题 描述 赛利有12枚银币.其中有11枚真币和1枚假币.假币看起来和真币没有区别,但是重量不同.但赛利不知道假币比真币轻还是重.于是他向朋友借了一架天平.朋友希望赛利称三次就能找出假币 ...

  3. 视频教程-算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践-C/C++

    算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿 ...

  4. 百练OJ:1013:Counterfeit Dollar(假币)

    题目描述 Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true sil ...

  5. 有趣的天平秤假币问题

    问题描述: 有12枚硬币,其中有一枚是假币,但是不知道是重还是轻.现给定一架没有砝码的天枰,问至少需要多少次称量才能找到这枚硬币?如何证明给出的方案是最少次数? 思路分析: 我们首先想到的可能是将12 ...

  6. 减治法解决八枚硬币问题/假币问题(JAVA)----二分,三分,不知轻重的情况

    八枚硬币问题 在八枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测出这枚假币. 我们先假 ...

  7. 【算法分析与设计】寻找假币问题

    问题描述:给出27枚硬币,它们的各种外观完全相同,但有一枚硬币稍重一点,是假币,我们只有一杆秤,试找到一种便捷的方法找出假币. 简单直接的思路是:直接从头到尾扫描遍历一趟,找出最大的即可.算法复杂度是 ...

  8. 称重问题 —— 哪个是假币?

    1. 假币堆问题 有 10 堆 10 枚外观完全一致的硬币,其中有一堆全部都是假币,其他各堆中的硬币都是真币.所有的真币重量都是 10 g,假币或者比它重一克,或者轻一克,也即要么 11g,要么 9 ...

  9. OpenJ_Bailian 2748

    题目链接:OpenJ_Bailian 2748 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列. 我们假设对于小写字母有'a' < 'b' < - < 'y' &l ...

最新文章

  1. php-fpm配置详解
  2. java临时的api,JAVA API-day03
  3. 使用Disruptor实现生产者和消费者模型
  4. sql server 2005 数据库状态 变成 可疑的解决方案
  5. 制作 Windows8   to Go
  6. 【Python】实现文章字符频次排序(文件IO、列表排序、字典操作和字符串join方法)
  7. python的认识从唯物主义_你对唯物主义的看法是怎么样的?
  8. 随机生成元素升序向量_使用random_shuffle()算法随机化序列元素
  9. iframe跨域与session失效问题
  10. 如何申请公网IP资源
  11. Python编程通过出生日期判断星座
  12. 后盾网php多少钱_后盾网php视频教程:2020最热的8个后盾网免费php视频教程
  13. Google的Picasa网络相册很弓虽!!!
  14. OpenCV图像处理_2:平滑smoothing模糊blurring操作
  15. 安装了PS2022 后,画笔工具使用延迟,操作卡到无法忍受,PS 插件合都卸载掉、设置暂存盘等方法都没有效果
  16. 微信小程序 关于下载文件、打开文件预览文件(wx.downloadFile和wx.openDocument)
  17. java 直角坐标系_直角坐标系(Java)
  18. 关于C语言的独立(freestanding)和托管(hosted)环境
  19. 写作论文文献导入方法
  20. PMP第13章知识点回顾,练习题

热门文章

  1. Java中beimage_GitHub - beconf/ImageBlurring: Android 中通过 Java 与 JNI 分别进行图片模糊;并且进行比较其运算速度。...
  2. unreal4 源码引言
  3. 云渲染和渲染农场的区别,什么是真正的云渲染
  4. oTree学习教程(七)Apps rounds
  5. 胡润研究院首发中国元宇宙潜力企业榜,巨杉数据库入选未来之星企业
  6. 万科副总裁毛大庆在建策沙龙上关于楼市走向的发言
  7. 笔记本电脑蓝牙忽然消失,设备管理器有未知USB设备描述符请求失败
  8. 紫外线消毒器的催化反应工艺指南
  9. #国产工业软件#外行人看工业软件,接轨还是出轨?
  10. 双赞的一体机主板能应用到哪些行业?