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
这个是个笨办法,用递归速度会更快。
请小心你的思想,它会影响你的行为,
请小心你的行为,它会影响你的习惯,
请小心你的习惯,它会影响你的性格,
请小心你的性格,它会影响你的命运。