谁是凶手:
来源:互联网 发布:linux下oracle自启动 编辑:程序博客网 时间:2024/06/11 00:12
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在根据这些信息,写一个程序来确定到底谁是凶手。
首先我们分析一下:4个人 1个说谎。当我们判断出谁在说谎,然后4个条件综合肯定能指向一个人,这个人就是凶手(也是说谎的那个人)
我们用“1”表示他是凶手,第一位表示D,第二位表示C,第三位表示B,第四位表示A。即ABCD
则:A说 不是他 可表示为 “0111” 即 ~8
B说 是C 可表示为 “0010” 即 2
C说 是D 可表示为 “0001” 即 1
D说 C在胡说 可表示为 “~C(1110)”
我们依次假设A(BCD)在说谎
可以得出A在说谎(凶手)
下来我们用C语言来完成找凶手:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){int A = ~8;int B = 2;int C = 1;int D = ~C;if((1==((~A)&B&C&D))||(2==((~A)&B&C&D))||(4==((~A)&B&C&D))||(8==((~A)&B&C&D))){printf("A说谎(凶手)\n");}if((1==(A&(~B)&C&D))||(2==(A&(~B)&C&D))||(4==(A&(~B)&C&D))||(8==(A&(~B)&C&D))){printf("B说谎(凶手)\n");}if((1==(A&B&(~C)&D))||(2==(A&B&(~C)&D))||(4==(A&B&(~C)&D))||(8==(A&B&(~C)&D))){printf("C说谎(凶手)\n");}if((1==(A&B&C&(~D)))||(2==(A&B&C&(~D)))||(4==(A&B&C&(~D)))||(8==(A&B&C&(~D)))){printf("D说谎(凶手)\n");}return 0;}
1 0
- 谁是凶手!
- 谁是凶手?
- 谁是凶手:
- 谁是凶手->
- 谁是凶手
- 谁是凶手
- 【C语言】谁是冠军 与 谁是凶手
- 比赛名次and谁是凶手
- C语言应用题——谁是凶手?
- 分享一条趣味题:谁是凶手?
- 各种小程序:(运动员名次与谁是凶手等)
- c语言:日本某地发生了一件谋杀案,写一个程序来确定到底谁是凶手。
- 3个人说了真话,1个人说的是假话。写一个程序来确定到底谁是凶手
- 杀人凶手
- 凶手覆灭记
- 贫穷才是凶手
- JavaScript趣题:找出凶手
- 日本谋杀案,找凶手
- centos中安装nginx
- 蓝桥杯 基础练习 回文数
- 122. Best Time to Buy and Sell Stock II
- 堆栈
- 原理调查之jdk配置原理
- 谁是凶手:
- 烟雨徽州行
- 如何用JQuery向select标签中添加option
- 采购单(京东2017秋招真题)
- 广告精准推送项目介绍
- 记录一下微信支付h5支付fail_no permission to execute
- C++-程序设计实现
- vmwarestation 12输入许可证或注册码提示需要管理员权限
- 31. Next Permutation(unsolved)