趣味问题——真话假话

有甲、乙两人,其中,甲只说假话,而不说真话;乙则是只说真话,不说假话。但是,他们两个人在回答别人的问题时,只通过点头与摇头来表示,不讲话。有一天,一个人面对两条路:A与B,其中一条路是通向京城的,而另一条路是通向一个小村庄的。这时,他面前站着甲与乙两人,但他不知道此人是甲还是乙,也不知道“点头”是表示“是”还是表示“否”。现在,他必须问一个问题,才可能断定出哪条路通向京城。那么,这个问题应该怎样问?

时间: 2024-10-11 03:55:44

趣味问题——真话假话的相关文章

逻辑表达式——谁在撒谎

一.问题描述 三个嫌疑犯在法官面前各执一词, 甲说:"乙在撒谎." 乙说:"丙在撒谎." 丙说:"甲乙两个人都在撒谎." 法官为难,甲乙丙三人到底谁在说谎,谁在说真话? 二.算法思想 三个人中每个人有两种可能,要么说真话,要么说假话,因此通过穷举法即可判断出最终的结果. 假设甲乙丙三个人所说的话用变量a.b.c表示,0代表说假话,1代表说真话.根据题意,列出如下的逻辑表达式: 甲:(a&&!b) || (!a&&b

【NOIP2003】侦探原理 大模拟 附数据 附题解 附注意

题解:处理证词(我是处理得每个人指证谁,保谁,说今天周几),枚举检查(我是先外层枚举周几,然后枚举每个人说了什么检查). 注意: 检查: 1.记录已确定说谎人数,不说谎人数. 2. 怎么方便怎么来,不要想着会超时.永远0ms! 3. 函数返回值的时机. 处理数据!!: 1. 全说谎,全不说谎 2. 名字叫"GUILTY"."I".星期几.特别长 3. 证词一旦不与表中相同,就作废!(正确的证词后面加一点点点废话,你懂的) 4. 测点怎么没有人叫TODAY?----

食物链(带全并查集)

/*初始化并查集的所有集合 和根节点直接的关系 找到父节点 合并集合,并更新点和父节点直接的关系 判断是否是真话 if 父节点不相等 true 加入集合中 if 相等 if() 判断在集合中与 根节点的关系对不对 对 true [加入集合]错 false 主函数: 创建集合 找到2点的父节点 判断是否是真话 假话 count++真话 和并集合 */ #include<stdio.h> #include<string.h> #define MAX 50005 int father[M

3个人说了真话,1个人说的是假话。写一个程序来确定到底谁是凶手

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.以下为4个嫌疑犯的供词.A说:不是我.B说:是C. C说:是D. D说:C在胡说.   等同于"不是D" 已知3个人说了真话,1个人说的是假话. 现在请根据这些信息,写一个程序来确定到底谁是凶手. 做之前的做题思路: 如果说A说的是假话,即BCD说的都是真话.即  是A,是C,是D,不是D.他们的说法相互矛盾,所以这种推论是错误的. 如果说B说的是假话,即ACD说的都是真话.即  不是A,不是C,是D,不是D.他们

日本谋杀案问题,警察通过排查确定杀人凶手必为4个嫌疑犯的一个,已知3个人说了真话,1个人说的是假话

#include<stdio.h> int main() { int i,sum=0,flag=0; char killer; for(i=1;i<=4;i++) { killer =64 +i; sum = (killer !='A')+(killer =='C')+(killer == 'D') +(killer!='D'); if(sum ==3) { flag=1; printf("%c is the killer.\n",killer); break; }

Python 趣味百题

趣味整数 1 不重复的3位数 -易 2 水仙花数 -易 3 完全数 -中 4 相亲数 -中 5 黑洞数 -中 6 勾股数 -易 7 自守数 -易 8 3位反序数 -中 趣味素数 1 素数 -中 2 孪生素数 -中 3 金蝉素数 -中 4 可逆素数 -中 5 回文素数 -中 6 平方回文素数 -中 7 梅森尼数 -中 8 哥德巴赫猜想 -中 9 等差素数数列 -中 趣味图形 1 回型矩阵 -中 2 九九乘法表 -易 3 杨辉三角 -易 数学问题 1 天平秤物 -难 2 黑色星期五 -易 3 存钱问

C语言趣味编程两小例

(1)5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. #include <stdio.h> int main() {    int a = 0, b = 0, c = 0, d = 0, e = 0;    for (a = 1; a <= 5; a++)   {       for

JAVA趣味逻辑算法

/**已知4位同学中的一位数学考了100分,当小李询问这4位是谁考了100分时,4个人的回答如下: A说:不是我. B说:是C C说:是D. D说:他胡说. 已知三个人说的是真话,一个人说的是假话.现在要根据这些信息,找出考100分的人. * */ 思路:四个人先假设第一个人考了100分,然后此时判断是否存在三人说真话,如果存在就就是该人,依次对四个人进行判断. public class Main { public static void main(String[] args) { char t

数学趣味题(相邻同加同减问题)

想要弥补数学方面的知识于是我看了刘汝佳老师的算法艺术. 从简单开始在这里记录一下. 题目的描述 很容易理解但是让我想的话,我会感觉很困难. 似乎见到多了,对这种问题有一种天生的恐惧. 但是学习嘛,一点一点积累. 刘汝佳老师这样讲到. 先把8个点归为红色和蓝色两类. 相邻的点不在同一类中. 假设我们先看一下最下面的ABCD四个点,假设A点有a个麻烦子,B点有b个麻烦子,C点有c个,D点有d个. 我们先让A,B同时增加c个,然后让B,C同时减少c个,这样就C就没有了,而A中多了c个.这样我们就能把同