首页 > 试题广场 >

Counterfeit Dollar

[编程题]Counterfeit Dollar
  • 热度指数:2428 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true silver dollars; one coin is counterfeit even though its color and size make it indistinguishable from the real silver dollars. The counterfeit coin has a different weight from the other coins but Sally does not know if it is heavier or lighter than the real coins.     Happily, Sally has a friend who loans her a very accurate balance scale. The friend will permit Sally three weighings to find the counterfeit coin. For instance, if Sally weighs two coins against each other and the scales balance then she knows these two coins are true. Now if Sally weighs one of the true coins against a third coin and the scales do not balance then Sally knows the third coin is counterfeit and she can tell whether it is light or heavy depending on whether the balance on which it is placed goes up or down, respectively.     By choosing her weighings carefully, Sally is able to ensure that she will find the counterfeit coin with exactly three weighings.

输入描述:
   . Each case consists of three lines of input, one for each weighing. Sally has identified each of the coins with the letters A--L. Information on a weighing will be given by two strings of letters and then one of the words ``up'', ``down'', or ``even''. The first string of letters will represent the coins on the left balance; the second string, the coins on the right balance. (Sally will always place the same number of coins on the right balance as on the left balance.) The word in the third position will tell whether the right side of the balance goes up, down, or remains even.


输出描述:
    For each case, the output will identify the counterfeit coin by its letter and tell whether it is heavy or light. The solution will always be uniquely determined.
示例1

输入

1
ABCD EFGH even 
ABCI EFJK up 
ABIJ EFGH even 

输出

K is the counterfeit coin and it is light.
头像 wbc990512
发表于 2021-01-24 16:08:39
题意就是12个硬币,11真,1假,假币轻或重未知,给出三次称量结果,找出假币。由于只有1个假币,而且题目说明答案唯一,那么设两个数组light和heavy,分别对应假币轻和假币重的情况。如果称量结果是even,那么天平左右的硬币均为真;如果称量结果是up(右边),那么假币轻的情况下左边天平和没称的均 展开全文
头像 Brillianman
发表于 2023-02-13 20:52:14
/*24种情况,挨个试*/ #include<stdio.h> #include<string.h> static int flag = 0; typedef struct { char S1[20]; char S2[20]; char S3[20] 展开全文
头像 健康快乐最重要
发表于 2020-03-04 16:57:03
写着写着写乱套了。下次一定要认真。一开始没思路,看了中科院大佬的想法,才有了这个思路。 首先题目保证肯定会得到解,所以就放心的去写就行了。 设置三种状态:1(超重) 0(正常)-1(低重) 初始为21.当为even时,两组硬币都是正确的,设置为02.当为up时,左边重,则先判断左边有没有低重(== 展开全文
头像 little-greenhand
发表于 2023-08-08 17:21:41
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int mycmp(char s1[],char s2[],int len)//自定义的字符数组比较 { i 展开全文
头像 宁静的冬日
发表于 2022-03-07 18:59:53
题目示例有问题,第一行那个1不该出现 #include<iostream> #include<algorithm> #include<string> using namespace std; //A-L有12枚银币 bool coin[12];//true真币,f 展开全文

问题信息

难度:
20条回答 5068浏览

热门推荐

通过挑战的用户

查看代码
Counterfeit Dollar