爱因斯坦的问题,他说全世界有98%的人做不出来!
#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

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

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

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

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


主题内容
[无标题] - 由 秋天的落叶 - 2005-7-29 00:35
[无标题] - 由 叱咤风云№ - 2005-7-29 15:19
[无标题] - 由 鹤冲天 - 2005-7-29 15:26
[无标题] - 由 yanxiang - 2005-7-29 16:32
[无标题] - 由 大花狗上树 - 2005-7-29 17:03
[无标题] - 由 叱咤风云№ - 2005-7-29 17:40
[无标题] - 由 大花狗上树 - 2005-7-29 18:03
[无标题] - 由 因我存在的明天 - 2005-7-29 18:13
[无标题] - 由 适度深蓝 - 2005-7-29 21:08
看你编的挺麻烦的! - 由 cool.44 - 2005-7-30 01:40
[无标题] - 由 wǒ僾.o菓涷 - 2005-7-30 02:22
[无标题] - 由 飘儿 - 2005-8-11 22:57
[无标题] - 由 鹤冲天 - 2005-8-11 23:04
[无标题] - 由 吉吉 - 2005-8-11 23:04
[无标题] - 由 leiyuss - 2005-8-12 18:15

跳转到:


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