OpenJ_Bailian - 2692 假币问题
我是传送门
赛利有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 假币问题相关推荐
- bailian.openjudge 2692:假币问题
http://bailian.openjudge.cn/practice/2692 描述 赛利有12枚银币.其中有11枚真币和1枚假币.假币看起来和真币没有区别,但是重量不同.但赛利不知道假币比真币轻 ...
- Bailian2692 假币问题【暴力】
2692:假币问题 描述 赛利有12枚银币.其中有11枚真币和1枚假币.假币看起来和真币没有区别,但是重量不同.但赛利不知道假币比真币轻还是重.于是他向朋友借了一架天平.朋友希望赛利称三次就能找出假币 ...
- 视频教程-算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践-C/C++
算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿 ...
- 百练OJ:1013:Counterfeit Dollar(假币)
题目描述 Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true sil ...
- 有趣的天平秤假币问题
问题描述: 有12枚硬币,其中有一枚是假币,但是不知道是重还是轻.现给定一架没有砝码的天枰,问至少需要多少次称量才能找到这枚硬币?如何证明给出的方案是最少次数? 思路分析: 我们首先想到的可能是将12 ...
- 减治法解决八枚硬币问题/假币问题(JAVA)----二分,三分,不知轻重的情况
八枚硬币问题 在八枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测出这枚假币. 我们先假 ...
- 【算法分析与设计】寻找假币问题
问题描述:给出27枚硬币,它们的各种外观完全相同,但有一枚硬币稍重一点,是假币,我们只有一杆秤,试找到一种便捷的方法找出假币. 简单直接的思路是:直接从头到尾扫描遍历一趟,找出最大的即可.算法复杂度是 ...
- 称重问题 —— 哪个是假币?
1. 假币堆问题 有 10 堆 10 枚外观完全一致的硬币,其中有一堆全部都是假币,其他各堆中的硬币都是真币.所有的真币重量都是 10 g,假币或者比它重一克,或者轻一克,也即要么 11g,要么 9 ...
- OpenJ_Bailian 2748
题目链接:OpenJ_Bailian 2748 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列. 我们假设对于小写字母有'a' < 'b' < - < 'y' &l ...
最新文章
- php-fpm配置详解
- java临时的api,JAVA API-day03
- 使用Disruptor实现生产者和消费者模型
- sql server 2005 数据库状态 变成 可疑的解决方案
- 制作 Windows8 to Go
- 【Python】实现文章字符频次排序(文件IO、列表排序、字典操作和字符串join方法)
- python的认识从唯物主义_你对唯物主义的看法是怎么样的?
- 随机生成元素升序向量_使用random_shuffle()算法随机化序列元素
- iframe跨域与session失效问题
- 如何申请公网IP资源
- Python编程通过出生日期判断星座
- 后盾网php多少钱_后盾网php视频教程:2020最热的8个后盾网免费php视频教程
- Google的Picasa网络相册很弓虽!!!
- OpenCV图像处理_2:平滑smoothing模糊blurring操作
- 安装了PS2022 后,画笔工具使用延迟,操作卡到无法忍受,PS 插件合都卸载掉、设置暂存盘等方法都没有效果
- 微信小程序 关于下载文件、打开文件预览文件(wx.downloadFile和wx.openDocument)
- java 直角坐标系_直角坐标系(Java)
- 关于C语言的独立(freestanding)和托管(hosted)环境
- 写作论文文献导入方法
- PMP第13章知识点回顾,练习题
热门文章
- Java中beimage_GitHub - beconf/ImageBlurring: Android 中通过 Java 与 JNI 分别进行图片模糊;并且进行比较其运算速度。...
- unreal4 源码引言
- 云渲染和渲染农场的区别,什么是真正的云渲染
- oTree学习教程(七)Apps rounds
- 胡润研究院首发中国元宇宙潜力企业榜,巨杉数据库入选未来之星企业
- 万科副总裁毛大庆在建策沙龙上关于楼市走向的发言
- 笔记本电脑蓝牙忽然消失,设备管理器有未知USB设备描述符请求失败
- 紫外线消毒器的催化反应工艺指南
- #国产工业软件#外行人看工业软件,接轨还是出轨?
- 双赞的一体机主板能应用到哪些行业?