有12枚硬币。其中有11枚真币和1枚假币。假币和真
币重量不同,但不知道假币比真币轻还是重。现在,
用一架天平称了这些币三次,告诉你称的结果,请你
找出假币并且确定假币是轻是重(数据保证一定能找
出来)。例题:POJ1013 称硬币
 输入
第一行是测试数据组数。
每组数据有三行,每行表示一次称量的结果。银币标号
为A-L。每次称量的结果用三个以空格隔开的字符串表示:
天平左边放置的硬币 天平右边放置的硬币 平衡状态。其
中平衡状态用``up'', ``down'', 或 ``even''表示, 分
别为右端高、右端低和平衡。天平左右的硬币数总是相等
的。
 输出
输出哪一个标号的银币是假币,并说明它比真币轻还是重。

  1. #include <iostream>
  2. #include<cstring>
  3. using namespace std;
  4. char Left[][];
  5. char Right[][];
  6. char Result[][];
  7. bool isFake(char c,bool light);
  8. int main()
  9. {
  10. int i;
  11. for(i=;i<;i++)
  12. {
  13. cin>>Left[i]>>Right[i]>>Result[i];
  14. }
  15. char c;
  16. for(c='A';c<='L';c++)
  17. {
  18. if(isFake(c,true))
  19. {
  20. cout<<c<<"是假币,重量轻"<<endl;
  21. }
  22. else if(isFake(c,false))
  23. {
  24. cout<<c<<"是假币,重量重"<<endl;
  25. }
  26. }
  27. return ;
  28. }
  29. bool isFake(char c,bool light)
  30. {
  31. char * pleft;
  32. char * pright;
  33. int i;
  34. for(i=;i<;i++)
  35. {
  36. if(light)
  37. {
  38. pleft=Left[i];
  39. pright=Right[i];
  40. }else{
  41. pleft=Right[i];
  42. pright=Left[i];
  43. }
  44. switch(Result[i][])
  45. {
  46. case 'u':
  47. if(strchr(pright,c)==NULL)
  48. return false;
  49. break;
  50. case 'e':
  51. if(strchr(pright,c)||strchr(pleft,c))
  52. return false;
  53. break;
  54. case 'd':
  55. if(strchr(pleft,c)==NULL)
  56. return false;
  57. break;
  58. }
  59. }
  60. return true;
  61. }

C++基础算法学习——猜假币的更多相关文章

  1. 四旋翼基础算法学习2-IMU输入滤波算法

    前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...

  2. 栈和队列的基础算法学习(EPI)

    今天学习的时间虽然挺多的,但是总觉效率不高.其实今天没有按照计划进行EPI题目的浏览,白天去看了其他的书籍.准备找工作可能需要的状态是一定量经典的书,偶尔温习才可.书是看不完的,知识点也是固定的.所以 ...

  3. 基础算法学习2-dp

    一.算法题: 最大子阵 给定一个n×m 的矩阵 A,求A 中的一个非空子矩阵,使这个子矩阵中的元素和最大.其中,A 的子矩阵指在 A 中行和列均连续的一部分.输入格式输入的第一行包含两个整数 n,m( ...

  4. C++基础算法学习——逆波兰表达式问题

    例题:逆波兰表达式逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 ...

  5. C++基础算法学习——N皇后问题

    n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在n*n的棋盘上,互相不能攻击,输出全部方案. 代码如下: #include <iostream> #include<cmath& ...

  6. C++基础算法学习——汉洛塔问题

    汉诺塔问题古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图).有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中, ...

  7. C++基础算法学习——熄灯问题

    有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行– 每个按钮的位置上有一盏灯– 当按下一个按钮后, 该按钮以及周围位置(上边, 下边,左边, 右边)的灯都会改变状态26熄灯问题 POJ1222– ...

  8. C++基础算法学习——完美立方

    形如a 3 = b 3 + c 3 + d 3 的等式被称为完美立方等式.例如12 3 = 6 3 + 8 3 + 10 3 .编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a, b ...

  9. C++基础算法学习——生理周期

    人有体力.情商.智商的高峰日子,它们分别每隔23天.28天和33天出现一次.对于每个人,我们想知道何时三个高峰落在同一天.给定三个高峰出现的日子p,e和i(不一定是第一次高峰出现的日子),再给定另一个 ...

随机推荐

  1. Feign使用Hystrix

    Feign使用Hystrix开发步骤 1.导入依赖spring-cloud-starter-hystrix 2.消费启动类开启@EnableCircuitBreaker 3.配置yml文件feign. ...

  2. 多线程读者写者问题--用QT实现

    先把代码贴上来,有时间再整理吧..因为工作中用Qt,所以用Qt实现的....刚上班,,忙! 三种方法,读者优先,写者优先和公平竞争.. 读者优先 #include <QCoreApplicati ...

  3. leetcode — divide-two-integers

    /** * Source : https://oj.leetcode.com/problems/divide-two-integers/ * * Created by lverpeng on 2017 ...

  4. redhat 下搭建网站

    1.修改yum源 把iso重新挂载到/media路径下,media是个只读的文件 vi  /etc/yum.repos.d/rhel-source.repo            //编辑yum源文件 ...

  5. jqgrid表头上面再加一行---二级表头

    实现效果如图,代码如下: $( "#table_list_1" ).jqGrid( 'setGroupHeaders' , { useColSpanStyle : true , / ...

  6. jenkins+Android+gradle持续集成

    本文Android自动化打包采用jenkins+gradle+upload to pyger的方式来实现,job执行完后只需要打开链接扫描二维码即可下载apk. 一.环境准备 1.下载Android ...

  7. Python 浅谈编程规范和软件开发目录规范的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  8. Jenkins持续集成学习-Windows环境进行.Net开发3

    目录 Jenkins持续集成学习-Windows环境进行.Net开发3 目录 前言 目标 优化nuget包生成流程 自动触发构建 Jenkins定时轮询触发 SVN客户端钩子触发 SVN服务器钩子触发 ...

  9. Django学习(6)配置静态文件

      本文将详细讲述如何在Django中配置静态文件,如图片(images),JavaScript,CSS等.   我们将要实现的网页如下: 当按下按钮"Change Text"时, ...

  10. HDU3567

    Eight II Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 130000/65536 K (Java/Others)Total S ...