一、问题:
5位运动员参加10米跳台跳水比赛,赛前运动员间预测结果:
A运动员:B第二,我第三
B运动员:我第二,E第四
C运动员:我第一,D第二
D运动员:C最后,我第三
E运动员:我第四,A第一
比赛过后,裁判公布结果,各位运动员赛前预测都猜对了一半,问:真实排名如何?
二、题目分析
已知五位运动员对结果的猜测,并且每个人只说对了一半。隐藏条件是五个人的排名都在1-5,因此我们可以先创建五个变量,来表示五位运动员的排名。再使用嵌套循环,找到一组a,b,c,d,e的符合题意的值。
对于判断条件,我们可以使用判断的方式(例如:(b==2)),因为如果判断正确,返回值为1,错误作为返回值为0,则每个人的两个猜测判断结果相加均为一。当满足所有条件时,便有了结果。
我们也可以使用异或的方式,因为如果两个值相同则为0,不同则为1,即0^0=0,0^1=1。那么我们每个人的两个猜测结果都为0和1,所以异或的结果也都是1。
注意:写完上述程序后,输出结果可能会发现,会出现以下这种情况,结果会有很多种。并且发现了一个排名有两三个人的情况,所以我们要加一个判断条件,&