夜明珠在哪里? 

一个人的夜明珠丢了,于是他开始四处寻找。

有一天,他来到了山上,看到有三个小屋,分别为1号、2号、3号。

从这三个小屋里分别走出来一个女子

1号屋的女子说:“夜明珠不在此屋里。”

2号屋的女子说:“夜明珠在1号屋内。”

3号屋的女子说:“夜明珠不在此屋里。”

这三个女子,其中只有一个人说了真话,那么,谁说了真话?夜明珠到底在哪个屋里面?请分析。


以3个女子说的话为条件进行假设与求证

declare @a int=1,@ture_count int,@true_people int

/**

假设夜明珠在房屋 @a

**/

while(@a<=3)

begin

set @ture_count=0

/**

"夜明珠不在1号屋"

**/

if(@a<>1)

  select @ture_count=@ture_count+1,@true_people=1

/**

"夜明珠在1号屋"

**/

if(@a=1)

  select @ture_count=@ture_count+1,@true_people=2

/**

夜明珠不在3号屋"

**/

if(@a<>3)

  select @ture_count=@ture_count+1,@true_people=3

/**

最终成立条件为"只有一个人说了真话"

**/

if(@ture_count=1)

select convert(varchar(max),@true_people)+N' 号屋说了真话, 夜明珠在 '+convert(varchar(max),@a)+N' 号屋。' as result

set @a=@a+1

end

image.png

结论:1 号屋说了真话,夜明珠在 3 号屋。