题目描述

有 A, B, C, D, E 5个同学涉嫌逃课:

  • (1)如果A逃课,B也一定逃课

  • (2)B和C中有且只有一个人参与逃课

  • (3)C和D要么都逃,要么都不逃

  • (4)D和E至少有一个人逃了

  • (5)如果E逃课,则A和D一定参与逃课

请输出逃课的同学:

  • 输入

  • 输出

    • 假如5个同学都逃课了,输出ABCDE
上传的附件
你的回答被采纳后将获得: 10点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : "WRITE-BUG技术共享平台"哪个版块你最讨厌 对"WRITE-BUG技术共享平台"说一句祝福语 : 下一篇keyboard_arrow_right

3个回答

Ridiculous
2020-07-12 12:15:34

哈哈,一开始还以为是吐槽帖,没想是问问题啊。。。顺便解答下你的问题吧。

bA, bB, bC, bD, bE 来表示A、B、C、D、E,true表示逃课,false表示不逃课,原理比较简单,就是暴力枚举 bA, bB, bC, bD, bE,然后判断是否满足给出的 5 个条件,代码如下所示:

  1. bool judge(bool bA, bool bB, bool bC, bool bD, bool bE)
  2. {
  3. bool bRet = false;
  4. do
  5. {
  6. // (1)如果A逃课,B也一定逃课
  7. if (true == bA)
  8. {
  9. if (true == bB)
  10. {
  11. // 条件(1)成立
  12. }
  13. else
  14. {
  15. // 条件(1)不成立
  16. break;
  17. }
  18. }
  19. // (2)B和C中有且只有一个人参与逃课
  20. if (true == (bB || bC) && false == (bB && bC))
  21. {
  22. // 条件(2)成立
  23. }
  24. else
  25. {
  26. // 条件(2)不成立
  27. break;
  28. }
  29. // (3)C和D要么都逃,要么都不逃
  30. if (true == bC)
  31. {
  32. if (true == bD)
  33. {
  34. // 条件(3)成立
  35. }
  36. else
  37. {
  38. // 条件(3)不成立
  39. break;
  40. }
  41. }
  42. else
  43. {
  44. if (false == bD)
  45. {
  46. // 条件(3)成立
  47. }
  48. else
  49. {
  50. // 条件(3)不成立
  51. break;
  52. }
  53. }
  54. // (4)D和E至少有一个人逃了
  55. if (true == (bD || bE))
  56. {
  57. // 条件(4)成立
  58. }
  59. else
  60. {
  61. // 条件(4)不成立
  62. break;
  63. }
  64. // (5)如果E逃课,则A和D一定参与逃课
  65. if (true == bE)
  66. {
  67. if ((true == bA) && (true == bD))
  68. {
  69. // 条件(5)成立
  70. }
  71. else
  72. {
  73. // 条件(5)不成立
  74. break;
  75. }
  76. }
  77. // 所有条件都满足
  78. bRet = true;
  79. } while (false);
  80. return bRet;
  81. }
  82. int _tmain(int argc, _TCHAR* argv[])
  83. {
  84. int a = 0, b = 0, c = 0, d = 0, e = 0;
  85. bool bA = false, bB = false, bC = false, bD = false, bE = false;
  86. for (a = 0; a < 2; a++)
  87. {
  88. for (b = 0; b < 2; b++)
  89. {
  90. for (c = 0; c < 2; c++)
  91. {
  92. for (d = 0; d < 2; d++)
  93. {
  94. for (e = 0; e < 2; e++)
  95. {
  96. bA = (bool)a;
  97. bB = (bool)b;
  98. bC = (bool)c;
  99. bD = (bool)d;
  100. bE = (bool)e;
  101. // 判断
  102. if (true == judge(bA, bB, bC, bD, bE))
  103. {
  104. if (true == bA)
  105. {
  106. printf("A");
  107. }
  108. if (true == bB)
  109. {
  110. printf("B");
  111. }
  112. if (true == bC)
  113. {
  114. printf("C");
  115. }
  116. if (true == bD)
  117. {
  118. printf("D");
  119. }
  120. if (true == bE)
  121. {
  122. printf("E");
  123. }
  124. printf("\n");
  125. }
  126. }
  127. }
  128. }
  129. }
  130. }
  131. return 0;
  132. }

运行程序,结果显示:CD,则表示C和D逃课满足上述5个条件~~~

Tattoo
2020-07-14 11:22:42

像这道题,直接printf输出结果,会不会就过了呢??

guandq
2020-07-27 17:09:57

先进行条件合并
1、三四两条,合并为C和E至少有一个人逃了
(1)如果A逃课,B也一定逃课
(2)B和C中有且只有一个人参与逃课
(3)C和E至少有一个人逃了
(5)如果E逃课,则A和D一定参与逃课
2、通过二三两条分析,假设B逃课,则C没逃课,E逃课,但通过第五条对比分析,D也逃课,因C和D是要么都逃课,要么都没逃课,顾B逃课不成立,由此可知C一定逃课
故:A、B未逃课,C、D都逃课,E未逃课

精彩评论

  • 请问机器学习怎么入门?
    要学好数学啊
    2019-06-08 13:03:56 thumb_up( 3 )
  • 数据结构应该怎么学
    数据结构学好并不难,关键是多上机操作,一个算法你看上去很简单,其实里面的小细节很多,没有自己编译连接运行,有些问题你可能发现不了。其实对于语言,真的无所谓啦,用C也好,用C#也好,都能实现,关键是算法思想的理解和运用。我们老师说过一句话:编程语言不懂,你可以花一个月的时间把那门语言学的滚瓜烂熟,然后你就可以写程序了;而要是你编程思想不理解,哪怕你会一千种语言,也写不出好的程序。数据结构关键是学习算法的思路。慢慢学吧,肯定能行的!
    2019-11-13 22:17:41 thumb_up( 5 )
  • 数据结构应该怎么学
    看视频、多动手实践、多思考
    2020-08-03 12:15:53 thumb_up( 1 )
  • 说说最近的感想吧(最佳答案不止一个)
    最近感觉挺好的,没什么特别高兴的事,也没什么很糟心的事。感觉平淡的生活才是最好的生活,人生最幸福的事就是有一个健康的身体,和睦的家庭,和平淡的生活。
    2020-06-13 20:02:15 thumb_up( 2 )
  • 自学Python语言,是看书好还是看视频好呢?
    视频和书结合看,书的话可以是电子书也可以是纸质版,书可以看《head first》,视频可以在哔哩哔哩里看免费视频。
    2020-08-03 18:31:12 thumb_up( 1 )
  • 实习生去那些公司更容易通过呢?
    我觉得还是要看你是什么方向吧,如果能力强而且实验室有关系的话肯定微软研究院呀。然后就是一些技术强的独角兽好进一些,比如无人驾驶的图森未来呀,或者计算机视觉的商汤科技呀,这种公司都是很有口碑很出paper的,而且还比较容易被招进去。
    2020-06-01 14:08:38 thumb_up( 2 )
  • 自学Python语言,是看书好还是看视频好呢?
    都行,建议书本和视频结合起来学习
    2020-08-03 12:00:31 thumb_up( 1 )
  • 请问机器学习怎么入门?
    可以看看吴恩达的视频
    2020-08-03 11:57:39 thumb_up( 1 )
  • 自学Python语言,是看书好还是看视频好呢?
    我的建议是看书,然后边看书边独立完成课后练习题,及时总结。 如果有其他语言,例如C/C++的基础,自学起来就更好了!
    2019-02-12 09:41:36 thumb_up( 4 )
  • 请问机器学习怎么入门?
    西瓜书
    2020-01-15 22:55:34 thumb_up( 2 )
eject