C语言 基础题求解答
四名嫌犯这四人中一名是窃贼而且这四人中每人要么是城市的要么总是说谎.他们给警察的回答是:甲:乙没偷是丁偷的乙:我没偷是丙偷的丙:甲没偷是丁偷的丁:我没偷...
四名嫌犯这四人中一名是窃贼 而且这四人中每人要么是城市的要么总是说谎.他们给警察的回答是:
甲: 乙没偷 是丁偷的
乙:我没偷 是丙偷的
丙:甲没偷 是丁偷的
丁:我没偷 展开
甲: 乙没偷 是丁偷的
乙:我没偷 是丙偷的
丙:甲没偷 是丁偷的
丁:我没偷 展开
2个回答
展开全部
(lovegjh757原创)最好不要用递归算法,太麻烦,最简单而且便于理解的办法如下:
设甲乙丙丁四人的偷盗值分别为ABCD,初始值为0(也就是非小偷)。
然而四位的供词要么真要么假,也就是说甲乙丙每人所提到的两人中必有一人是小偷。
因此:
甲供词:B+D=1(有小偷)
乙供词:B+C=1(有小偷)
丙供词:A+D=1(有小偷)
四名嫌犯中必有小偷,所以A+B+C+D=1
如此计算:
(B+D)+(B+C)+(A+D)=3
A+B+C+D=1
上下等式相减结果为:B+B=2
由此得出结果:B=1
也就是说乙为小偷
设甲乙丙丁四人的偷盗值分别为ABCD,初始值为0(也就是非小偷)。
然而四位的供词要么真要么假,也就是说甲乙丙每人所提到的两人中必有一人是小偷。
因此:
甲供词:B+D=1(有小偷)
乙供词:B+C=1(有小偷)
丙供词:A+D=1(有小偷)
四名嫌犯中必有小偷,所以A+B+C+D=1
如此计算:
(B+D)+(B+C)+(A+D)=3
A+B+C+D=1
上下等式相减结果为:B+B=2
由此得出结果:B=1
也就是说乙为小偷
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询