爱因斯坦的问题,他说全世界有98%的人做不出来!
#1
爱因斯坦在20世纪初出的这个谜语,题目是这样的:
1、在一条街上,有5座房子,喷了5种颜色。
2、每个房里住着不同国籍的人。
3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。

提示:

1、英国人住红色房子
2、瑞典人养狗
3、丹麦人喝茶
4、绿色房子在白色房子左面
5、绿色房子主人喝咖啡
6、抽Pall Mall香烟的人养鸟
7、黄色房子主人抽Dunhill香烟
8、住在中间房子的人喝牛奶
9、挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住在抽Dunhill香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居

问题是:谁养鱼?
回复
#2
原来看过这个题,可惜忘了答案了
[图片: 13_Yspiy2Nvp3mV.gif]
<font color="MAROON">
回复
#3
见好多次了
不过每次想也都挺搁撂的
回复
#4
肯做就能做出来
极简单
就是多次重复简易推理
宁可死个枫叶的红
灿烂的狂舞天空
去追向南飞的鸿雁
驾着万里的长风
回复
#5
不會吧,妳們很有耐心?
我是燕翔.......
谁要是动我的女人,
我会让他死的很惨的.


我們隻是緬懷,我們並未相愛
回复
#6
我懒得想,写个程序让电脑自己捉么。

挪威 丹麦 英国 德国 瑞典
黄色 蓝色 红色 绿色 白色
养猫 养马 养鸟 养鱼 养狗
喝水 喝茶 牛奶 咖啡 啤酒
Dunhill Belends Pall Mall Prince Blue Master
请小心你的思想,它会影响你的行为,

请小心你的行为,它会影响你的习惯,

请小心你的习惯,它会影响你的性格,

请小心你的性格,它会影响你的命运。
回复
#7

用电脑怎么弄了
回复
#8
Dim country() As String = {"挪威", "英国", "瑞典", "德国", "丹麦"}
Dim color() As String = {"蓝色", "绿色", "红色", "白色", "黄色"}
Dim pet() As String = {"马", "狗", "鸟", "猫", "鱼"}
Dim drink() As String = {"牛奶", "咖啡", "茶", "水", "啤酒"}
Dim cig() As String = {"Dunhill", "Pall Mall", "Blends", "Blue Master", "Prince"}

Function getidx(ByVal one_array() As String, ByVal cont As String) As Integer
Dim index, id As Integer
For index = 0 To 4
If one_array(index) = cont Then
id = index
End If
Next
Return id
End Function

Function pd(ByVal country() As String, ByVal color() As String, ByVal pet() As String, ByVal drink() As String, ByVal cig() As String) As Integer

Dim g As Integer

g = 0

'1、英国人住红色房子
If getidx(country, "英国") = getidx(color, "红色") Then
g = g + 1
End If

'2、瑞典人养狗
If getidx(country, "瑞典") = getidx(pet, "狗") Then
g = g + 1
End If

'3、丹麦人喝茶
If getidx(country, "丹麦") = getidx(drink, "茶") Then
g = g + 1
End If

'4、绿色房子在白色房子左面
If getidx(color, "白色") <> 0 Then
If getidx(color, "绿色") = getidx(color, "白色") - 1 Then
g = g + 1
End If
End If

'5、绿色房子主人喝咖啡
If getidx(color, "绿色") = getidx(drink, "咖啡") Then
g = g + 1
End If

'6、抽Pall Mall香烟的人养鸟
If getidx(cig, "Pall Mall") = getidx(pet, "鸟") Then
g = g + 1
End If

'7、黄色房子主人抽Dunhill香烟
If getidx(color, "黄色") = getidx(cig, "Dunhill") Then
g = g + 1
End If

'8、住在中间房子的人喝牛奶
If drink(2) = "牛奶" Then
g = g + 1
End If

'9、挪威人住第一间房
If country(0) = "挪威" Then
g = g + 1
End If

'10、抽Blends香烟的人住在养猫的人隔壁
If getidx(pet, "猫") <> 4 Then
If getidx(cig, "Blends") = getidx(pet, "猫") + 1 Then
g = g + 1
End If
Else
If getidx(pet, "猫") <> 0 Then
If getidx(cig, "Blends") = getidx(pet, "猫") - 1 Then
g = g + 1
End If
End If
End If

'11、养马的人住在抽Dunhill香烟的人隔壁
If getidx(cig, "Dunhill") <> 4 Then
If getidx(pet, "马") = getidx(cig, "Dunhill") + 1 Then
g = g + 1
End If
Else
If getidx(cig, "Dunhill") <> 0 Then
If getidx(pet, "马") = getidx(cig, "Dunhill") - 1 Then
g = g + 1
End If
End If
End If

'12、抽Blue Master的人喝啤酒
If getidx(cig, "Blue Master") = getidx(drink, "啤酒") Then
g = g + 1
End If

'13、德国人抽Prince香烟
If getidx(country, "德国") = getidx(cig, "Prince") Then
g = g + 1
End If

'14、挪威人住蓝色房子隔壁
If color(1) = "蓝色" Then
g = g + 1
End If

'15、抽Blends香烟的人有一个喝水的邻居
If getidx(drink, "水") <> 4 Then
If getidx(cig, "Blends") = getidx(drink, "水") + 1 Then
g = g + 1
End If
Else
If getidx(drink, "水") <> 0 Then
If getidx(cig, "Blends") = getidx(drink, "水") - 1 Then
g = g + 1
End If
End If
End If

If g = 15 Then
Return g
Else
Return 0
End If
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c, d, f, id As Integer
Dim aa(5), bb(5), cc(5), dd(5), ff(5) As String
Dim aaa(6, 5) As String
Dim bbb(6, 5) As String
Dim ccc(24, 5) As String
Dim ddd(12, 5) As String
Dim fff(24, 5) As String

id = 0
a = 1000
b = 2000
c = 3000
d = 4000
f = 5000

For b = 2 To 4
'For c = 1 To 4
For d = 2 To 4
For f = 2 To 4
If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then
aaa(id, 0) = country(0)
aaa(id, 1) = country(b)
aaa(id, 2) = country(1)
aaa(id, 3) = country(d)
aaa(id, 4) = country(f)
id = id + 1
End If
Next
Next
'Next
Next

id = 0
a = 1000
b = 2000
c = 3000
d = 4000
f = 5000
For a = 2 To 4
'For b = 0 To 4
For c = 2 To 4
For d = 1 To 4
For f = 2 To 4
If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then
bbb(id, 0) = color(a)
bbb(id, 1) = color(0)
bbb(id, 2) = color©
bbb(id, 3) = color(d)
bbb(id, 4) = color(f)
id = id + 1
End If
Next
Next
Next
'Next
Next

id = 0
a = 1000
b = 2000
c = 3000
d = 4000
f = 5000
For a = 1 To 4
'For b = 0 To 4
For c = 1 To 4
For d = 1 To 4
For f = 1 To 4
If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then
ccc(id, 0) = pet(a)
ccc(id, 1) = "马"
ccc(id, 2) = pet©
ccc(id, 3) = pet(d)
ccc(id, 4) = pet(f)
id = id + 1
End If
Next
Next
Next
'Next
Next

id = 0
a = 1000
b = 2000
c = 3000
d = 4000
f = 5000
For a = 1 To 4
For b = 2 To 4
'For c = 0 To 4
For d = 1 To 4
For f = 2 To 4
If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then
ddd(id, 0) = drink(a)
ddd(id, 1) = drink(b)
ddd(id, 2) = drink(0)
ddd(id, 3) = drink(d)
ddd(id, 4) = drink(f)
id = id + 1
End If
'Next
Next
Next
Next
Next

id = 0
a = 1000
b = 2000
c = 3000
d = 4000
f = 5000
For b = 1 To 4
For c = 1 To 4
For d = 1 To 4
For f = 1 To 4
If a <> b And a <> c And a <> d And a <> f And b <> c And b <> d And b <> f And c <> d And c <> f And d <> f Then
fff(id, 0) = "Dunhill"
fff(id, 1) = cig(b)
fff(id, 2) = cig©
fff(id, 3) = cig(d)
fff(id, 4) = cig(f)
id = id + 1
End If
Next
Next
Next
Next

For a = 0 To 5
'For b = 0 To 5
For c = 0 To 23
For d = 0 To 11
For f = 0 To 23
aa(0) = "挪威"
aa(1) = aaa(a, 1)
aa(2) = "英国"
aa(3) = aaa(a, 3)
aa(4) = aaa(a, 4)

bb(0) = "黄色" 'bbb(b, 0)
bb(1) = "蓝色" 'bbb(b, 1)
bb(2) = "红色" 'bbb(b, 2)
bb(3) = "绿色" 'bbb(b, 3)
bb(4) = "白色" 'bbb(b, 4)

cc(0) = ccc(c, 0)
cc(1) = ccc(c, 1)
cc(2) = ccc(c, 2)
cc(3) = ccc(c, 3)
cc(4) = ccc(c, 4)

dd(0) = ddd(d, 0)
dd(1) = ddd(d, 1)
dd(2) = ddd(d, 2)
dd(3) = ddd(d, 3)
dd(4) = ddd(d, 4)

ff(0) = fff(f, 0)
ff(1) = fff(f, 1)
ff(2) = fff(f, 2)
ff(3) = fff(f, 3)
ff(4) = fff(f, 4)
If pd(aa, bb, cc, dd, ff) = 15 Then
ListBox1.Items.Add(aa(0) + " " + aa(1) + " " + aa(2) + " " + aa(3) + " " + aa(4))
ListBox1.Items.Add(bb(0) + " " + bb(1) + " " + bb(2) + " " + bb(3) + " " + bb(4))
ListBox1.Items.Add(cc(0) + " " + cc(1) + " " + cc(2) + " " + cc(3) + " " + cc(4))
ListBox1.Items.Add(dd(0) + " " + dd(1) + " " + dd(2) + " " + dd(3) + " " + dd(4))
ListBox1.Items.Add(ff(0) + " " + ff(1) + " " + ff(2) + " " + ff(3) + " " + ff(4))
Exit Sub
End If
Next
Next
Next
'Next
Next
End Sub
End Class

这个是个笨办法,用递归速度会更快。
请小心你的思想,它会影响你的行为,

请小心你的行为,它会影响你的习惯,

请小心你的习惯,它会影响你的性格,

请小心你的性格,它会影响你的命运。
回复
#9
高手就是高手...
回复
#10
强就一个字,强到外婆桥。。。。
要努力,要幸福……
[图片: 703.jpg]
回复


跳转到:


正在阅读该主题的用户: 1位游客
您的访问已通过Cloudflare保护,访问自美国/loc=US。