题目:

这里直接给出原文(英文)连接:
http://poj.org/problem?id=1013
下面是简单的翻译:
有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来)。
输入
第一行是测试数据组数。
每组数据有三行,每行表示一次称量的结果。银币标号为A-L。每次称量的结果用三个以空格隔开的字符串表示:天平左边放置的硬币 天平右边放置的硬币 平衡状态。其中平衡状态用up'',down”, 或 “even”表示, 分别为右端高、右端低和平衡。天平左右的硬币数总是相等的。
输出
输出哪一个标号的银币是假币,并说明它比真币轻还是重。
输入样例
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
输出样例
K is the counterfeit coin and it is light.

解答:

#include<iostream>
#include<cstdio>
using namespace std;
char Left[3][7];//天平左边硬币//12个硬币,天平一边最多放6个
char Right[3][7];//天平右边硬币
char result[3][5];//结果//even up down
bool IsFake(char c, bool light)
//参数列表:light为真表示假设假币为轻,否则表示假设假币为重
{for (int i = 0;i < 3;i++) {//从3次称量结果中判断char *pLeft, *pRight;//分别指向天平两边的字符串if (light) {//假设假币是轻的pLeft = Left[i];pRight = Right[i];}else {//如果假设假币是重的,则把称量结果左右对换(这样可以少些一遍swith)pLeft = Right[i];pRight = Left[i];}switch (result[i][0])//天平右边情况{case 'u'://天平右边翘起,当假设c是轻的时候c一定存在于右边的字符串中if (strchr(pRight, c) == NULL)//如果c不存在右边(无真值),就说明假设错误return false;break;case 'e'://天平两边平衡,当假设c是轻的时候c不存在于任何一边的字符串if (strchr(pLeft, c) || strchr(pRight, c))//如果c存在任何一边(返回真值),说明假设错误return false;break;case 'd'://天平右边落下,当假设c是轻的时候c一定存在于左边的字符串中if (strchr(pLeft, c) == NULL)//如果c不存在左边(无真值),就说明假设错误return false;break;}}return true;
}
int main()
{int t;//测试的次数cin >> t;while (t--) {for (int i = 0;i < 3;i++)cin >> Left[i] >> Right[i] >> result[i];//依次枚举假的那个硬币(分别看它是轻还是重),如果返回true,则找到(break)。for (char c = 'A';c <= 'L';c++) {if (IsFake(c, true)) {cout << c << " is the counterfeit coin and it is light.\n";break;}else if (IsFake(c, false)) {cout << c << " is the counterfeit coin and it is heavy.\n";break;}}}return 0;
}

另外:

strchr()函数:查找某字符在字符串中首次出现的位置
strrchr()函数:查找某字符在字符串中最后一次出现的位置
详细请看:
http://blog.csdn.net/zzlcsdn2017/article/details/69625306

POJ1013Counterfeit Dollar相关推荐

  1. Counterfeit Dollar

    原题及翻译 Counterfeit Dollar 假币 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 52569 Accepte ...

  2. Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)

    题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式. 解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值.与记录有多少种路径的 ...

  3. 安装dollar toolbox

    安装dollar toolbox 一.准备: 1.https://pdollar.github.io/toolbox/下载dollar toolbox 2.http://www.vision.calt ...

  4. Dollar toolbox 学习笔记(一)

     Dollar toolbox 学习笔记(一) Dollar toolbox工具包是dollar写的关于行人检测的MATLAB工具包,工具包是对他经典论文的实现. 可在https://pdolla ...

  5. bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)

    1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 599  Solved: 3 ...

  6. Counterfeit Dollar(找硬币)

    第一次做英文题,着实给我整的有点懵逼(毕竟四级是水过去的,这个学期也没打算考六级) 原题如下:OpenJudge - 15:Counterfeit Dollar 大致意思是通过三次比较结果,找12枚硬 ...

  7. Currency Trading: Dollar in a Funk as Traders Bet on Slow Rebound

    美元兑多数其他主要货币的汇率周二大幅下挫,因为乐观的投资者断定,世界其他地区摆脱经济衰退的速度会快于美国.周二是夏季假日季节结束后的第一个全天交易日,在伦敦交易时段,美元兑欧元汇率跌至今年以来的最低点 ...

  8. 区块链:Neutral Dollar(NUSD)亚稳态的可视化

    关键要点 Neutral Dollar 是一个稳定币的货币篮子,并且因为这种设计上的亚稳定性(metastability),它也继承了稳定币的一些吸引人的特点.这一组合产品让人们可以通过投资组合多元化 ...

  9. 1 Trillion Dollar Refund – How To Spoof PDF Signatures——欺骗PDF签名

    文章目录 PDF结构 PDF签名工作原理 攻击方式 通用签名伪造 USF 增量存储攻击 ISA 签名包装攻击 SWA pdf signature被攻击的主要原因 防止以上三种攻击手段的算法例子 本文将 ...

最新文章

  1. bugzilla部署
  2. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结
  3. 简单的图像去噪的实现和验证码识别
  4. 今日话题:月薪过万真的很难吗?
  5. Linux-文件查找
  6. elasticsearch原理_花几分钟看一下Elasticsearch原理解析与性能调优
  7. Struts2.3接收post方式提交的表单参数的方式
  8. 去掉viewstate保持在页面中的一大串字符的方法
  9. 是哪个app_互联网app创业哪个比较好
  10. 读书笔记∣写给大家看的设计书
  11. NOI十连测 第三测 T1
  12. mysql myisam commit_mysql autocommit对myisam,innodb的性能影响
  13. 【CarMaker学习笔记】行人穿过人行道、横穿马路观察自动驾驶车辆避让实验
  14. 如何用Primer6批量设计引物(非全cDNA引物)
  15. Android 深色模式适配
  16. nginx 自建证书https 报错 no “ssl_certificate“ is defined in server listening on SSL port while SSL handsha
  17. 【SPEA飞针测试】4085飞针测试机简述
  18. TiDB 6.1 单机环境 On openEular 2003 SP3
  19. 大学英语(第四册)复习(原文及全文翻译)——Unit 10 - Why People Work(人为什么工作)
  20. [FMG]两个简单的JSP+servlet小程序

热门文章

  1. Security Context
  2. Sand Fortress
  3. 初探Ubutun下IDK环境的搭建
  4. 博弈论进阶之Anti-SG游戏与SJ定理(转载)
  5. #yyds干货盘点#DHCP动态分配IP以及静态分配IP
  6. 证考网:一建与二建的具体区别是什么?
  7. python 并发编程---线程
  8. Linux vi简介
  9. 给数子加千分号的方法(每三个数字后加一个逗号)
  10. 让我们一起来书写人生