【活动二】求解“谁是冠军”
1.问题分析:根据甲乙丙丁四位同学的阐述判断谁是冠军。甲说:“不是我。”乙说:“是丙。”丙说:“是丁。”丁说:“丙说的不对。”已知四人中有一人说了假话。
2.巧用列举,搭建数学模型:
假设 | 甲说是否成立 | 乙说是否成立 | 丙说是否成立 | 丁说是否成立 |
甲是冠军 | × | × | × | √ |
乙是冠军 | √ | × | × | √ |
丙是冠军 | √ | √ | × | √ |
丁是冠军 | √ | × | √ | × |
四人中有一个说了假话,也就是说四句话中成立的有3局。通过数学上的列举法,可以推断出冠军是丙。
3.设计求解问题的算法:
该问题涉及到的算法是枚举(或穷举)法,是利用计算机速度的快、精确度高的特点,把所有可能的答案一一列举,合适就保留,不合适就丢弃,利用循环结构+判断结构来实现。
champion=["甲","乙","丙","丁"]
for guanjun in champion:
x=(guanjun!="甲")+(guanjun=="丙")+(guanjun=="丁")+(guanjun!="丁")
if x==3:
print("冠军是:",guanjun)