题目如图所示,题目中我们知道,永远满足条件三个人说真话,一个人说假话,那么我们就设说真话条件为1,说假话的条件为0
由此,我们就知道当所有的条件加起来,就满足1+1+1+0,为3
如图所示,我们可以先定义一个chat类型的变量“killer”,让他先从A开始排查,一直排查到D;最后killer等于哪个字符,哪个字符就是凶手
由于字符的ACSLL码是顺序排序,killer初始是‘A’,此后每次加一就可以招待下一个字符
同时,我们将题目中的条件加进去,满足该条件时,返回的值就是1,我们将每个条件加起来。在上文中我们知道,这些条件肯定满足3,那么我们就寻找满足这些条件相加等于3的killer的字符,最后找到的字符就是答案
第二题中,让我们确认五名选手的名次,我们已知条件是每个选手都说对了一半,那我们可以再次用到第一题中的方法,当这个选手说的条件是真的时候,则为1;为假,则为0.
那么,每个选手都说对一半,就是每个选手都说对一个条件,加起来则为5
同时,我们定义出a,b,c,d,e五个变量,让他们都从0开始筛选,当满足我们的条件时,就输出名次
如图所示,我们将所有可能都找出来,但是最后却发现有很多情况也满足条件,这是因为我们在筛选的时候将重复的条件带了进去,最后的名次肯定只有一个情况
我们知道,A,B,C,D,E五个人是1,2,3,4,5的名次排列,五个名次的乘积必是120,所以我们可以加上上图的条件,来筛选我们想要的正确答案