一个求24点所有可能解的VB源代码及程序实现
来源:互联网 发布:erp软件测试六部曲 编辑:程序博客网 时间:2024/06/05 12:03
其实网络上都有其他语言的代码,但是VB的不多。网上求一种解的代码多,但是求所有解的代码和程序不多。最近花了2天做了一个求24点所有解的VB小程序,算法无非都是穷举法。我解算的思路如下:
24点无非下列几种种解法:
1.(a符号b)符号(c符号d)形式 例如:(9-5)*(10-6)
2.((a符号b)符号c)符号d 形式 或者 d符号((a符号b)符号c)例如:((10-2)/2)*6 或者6*((10-2)/2)
3.(a符号(b符号c))符号d 形式 或者 d符号(a符号(b符号c))例如:(8/(4/2))*6或者8/(3-(8/3))
4. 无括号的情况包括在有括号情况里面, 例如4+2*5+10可以解成(4+10)+(2*5)
5. 交换a,b,c,d位置求解即可。
源代码:
Dim daan As Boolean '判定(a+b)+(c+d)是否有解
Dim s(1 To 4) As Integer '输入的四个数
Dim daan1 As Boolean '判定((a+b)+c)+d)是否有解
Dim dyjs As Integer '控制打印列数
Sub shuchu1(a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, i1 As Integer, j1 As Integer, k1 As Integer) '子过程,以((a+b)+c)+d输出结果,ijk运算符号,abcd是四个数
Print "("; "("; a1;
If i1 = 1 Then
Print ; "+";
ElseIf i1 = 2 Then
Print ; "-";
ElseIf i1 = 3 Then
Print ; "×";
ElseIf i1 = 4 Then
Print ; "÷";
End If
Print ; b1; ")";
If j1 = 1 Then
Print ; "+";
ElseIf j1 = 2 Then
Print ; "-";
ElseIf j1 = 3 Then
Print ; "×";
ElseIf j1 = 4 Then
Print ; "÷";
End If
Print ; c1; ")";
If k1 = 1 Then
Print ; "+";
ElseIf k1 = 2 Then
Print ; "-";
ElseIf k1 = 3 Then
Print ; "×";
ElseIf k1 = 4 Then
Print ; "÷";
End If
Print ; d1; "="; 24; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End Sub
Sub shuchu2(a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, i1 As Integer, j1 As Integer, k1 As Integer) '子过程,以d+((a+b)+c)输出结果,ijk运算符号,abcd是四个数
Print ; d1;
If k1 = 1 Then
Print ; "+";
ElseIf k1 = 2 Then
Print ; "-";
ElseIf k1 = 3 Then
Print ; "×";
ElseIf k1 = 4 Then
Print ; "÷";
End If
Print "("; "("; a1;
If i1 = 1 Then
Print ; "+";
ElseIf i1 = 2 Then
Print ; "-";
ElseIf i1 = 3 Then
Print ; "×";
ElseIf i1 = 4 Then
Print ; "÷";
End If
Print ; b1; ")";
If j1 = 1 Then
Print ; "+";
ElseIf j1 = 2 Then
Print ; "-";
ElseIf j1 = 3 Then
Print ; "×";
ElseIf j1 = 4 Then
Print ; "÷";
End If
Print ; c1; ")"; "="; 24; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End Sub
Sub shuchu3(a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, i1 As Integer, j1 As Integer, k1 As Integer) '子过程,以(a+(b+c))+d输出结果,ijk运算符号,abcd是四个数
Print "("; a1;
If j1 = 1 Then
Print ; "+";
ElseIf j1 = 2 Then
Print ; "-";
ElseIf j1 = 3 Then
Print ; "×";
ElseIf j1 = 4 Then
Print ; "÷";
End If
Print ; "("; b1;
If i1 = 1 Then
Print ; "+";
ElseIf i1 = 2 Then
Print ; "-";
ElseIf i1 = 3 Then
Print ; "×";
ElseIf i1 = 4 Then
Print ; "÷";
End If
Print ; c1; ")"; ")";
If k1 = 1 Then
Print ; "+";
ElseIf k1 = 2 Then
Print ; "-";
ElseIf k1 = 3 Then
Print ; "×";
ElseIf k1 = 4 Then
Print ; "÷";
End If
Print ; d1; "="; 24; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End Sub
Sub shuchu4(a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, i1 As Integer, j1 As Integer, k1 As Integer) '子过程,以d+(a+(b+c))输出结果,ijk运算符号,abcd是四个数
Print ; d1;
If k1 = 1 Then
Print ; "+";
ElseIf k1 = 2 Then
Print ; "-";
ElseIf k1 = 3 Then
Print ; "×";
ElseIf k1 = 4 Then
Print ; "÷";
End If
Print "("; a1;
If j1 = 1 Then
Print ; "+";
ElseIf j1 = 2 Then
Print ; "-";
ElseIf j1 = 3 Then
Print ; "×";
ElseIf j1 = 4 Then
Print ; "÷";
End If
Print ; "("; b1;
If i1 = 1 Then
Print ; "+";
ElseIf i1 = 2 Then
Print ; "-";
ElseIf i1 = 3 Then
Print ; "×";
ElseIf i1 = 4 Then
Print ; "÷";
End If
Print ; c1; ")"; ")"; "="; 24; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End Sub
Sub xingshi1(a As Integer, b As Integer, c As Integer, d As Integer) '判断(a+b)+(c+d)形式是否有解,并输出
Dim result1 As Single, result2 As Single, result As Single '(a+b)=result1,(c+d)=result2
Dim ms As Integer, ls As Integer '判断a,b,c,d是否相同,减少穷举次数
If a = b Then
ms = 1
Else
ms = 2
End If
If c = d Then
ls = 1
Else
ls = 2
End If
For i = 1 To 4
For j = 1 To 4
For k = 1 To 4
For l = 1 To ls
For m = 1 To ms
If i = 1 And m = 1 Then result1 = a + b
If i = 1 And m = 2 Then result1 = b + a
If i = 2 And m = 1 Then result1 = a - b '交换a,b位置
If i = 2 And m = 2 Then result1 = b - a '交换a,b位置
If i = 3 And m = 1 Then result1 = a * b
If i = 3 And m = 2 Then result1 = b * a
If i = 4 And m = 1 Then result1 = a / b
If i = 4 And m = 2 Then result1 = b / a
If j = 1 And l = 1 Then result2 = c + d
If j = 1 And l = 2 Then result2 = d + c
If j = 2 And l = 1 Then result2 = c - d '交换c,d位置
If j = 2 And l = 2 Then result2 = d - c
If j = 3 And l = 1 Then result2 = c * d
If j = 3 And l = 2 Then result2 = d * c
If j = 4 And l = 1 Then result2 = c / d '交换c,d位置
If j = 4 And l = 2 Then result2 = d / c '交换c,d位置
If k = 1 Then
result = result1 + result2
If Round(result, 4) = 24 Then
daan = True
If i = 1 And m = 1 Then Print "("; a; "+"; b; ")"; "+"; '输出a,b
If i = 1 And m = 2 Then Print "("; b; "+"; a; ")"; "+";
If i = 2 And m = 1 Then Print "("; a; "-"; b; ")"; "+";
If i = 2 And m = 2 Then Print "("; b; "-"; a; ")"; "+";
If i = 3 And m = 1 Then Print "("; a; "×"; b; ")"; "+";
If i = 3 And m = 2 Then Print "("; b; "×"; a; ")"; "+";
If i = 4 And m = 1 Then Print "("; a; "÷"; b; ")"; "+";
If i = 4 And m = 2 Then Print "("; b; "÷"; a; ")"; "+";
If j = 1 And l = 1 Then
Print "("; c; "+"; d; ")"; "="; result; Space(10); '输出c,d
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 1 And l = 2 Then
Print "("; d; "+"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 1 Then
Print "("; c; "-"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 2 Then
Print "("; d; "-"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 1 Then
Print "("; c; "×"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 2 Then
Print "("; d; "×"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 1 Then
Print "("; c; "÷"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 2 Then
Print "("; d; "÷"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
End If
End If
If k = 2 Then
result = result1 - result2
If Round(result, 4) = 24 Then
daan = True
If i = 1 And m = 1 Then Print "("; a; "+"; b; ")"; "-";
If i = 1 And m = 2 Then Print "("; b; "+"; a; ")"; "-";
If i = 2 And m = 1 Then Print "("; a; "-"; b; ")"; "-";
If i = 2 And m = 2 Then Print "("; b; "-"; a; ")"; "-";
If i = 3 And m = 1 Then Print "("; a; "×"; b; ")"; "-";
If i = 3 And m = 2 Then Print "("; b; "×"; a; ")"; "-";
If i = 4 And m = 1 Then Print "("; a; "÷"; b; ")"; "-";
If i = 4 And m = 2 Then Print "("; b; "÷"; a; ")"; "-";
If j = 1 And l = 1 Then
Print "("; c; "+"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 1 And l = 2 Then
Print "("; d; "+"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 1 Then
Print "("; c; "-"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 2 Then
Print "("; d; "-"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 1 Then
Print "("; c; "×"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 2 Then
Print "("; d; "×"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 1 Then
Print "("; c; "÷"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 2 Then
Print "("; d; "÷"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
End If
End If
If k = 3 Then
result = result1 * result2
If Round(result, 4) = 24 Then
daan = True
If i = 1 And m = 1 Then Print "("; a; "+"; b; ")"; "×";
If i = 1 And m = 2 Then Print "("; b; "+"; a; ")"; "×";
If i = 2 And m = 1 Then Print "("; a; "-"; b; ")"; "×";
If i = 2 And m = 2 Then Print "("; b; "-"; a; ")"; "×";
If i = 3 And m = 1 Then Print "("; a; "×"; b; ")"; "×";
If i = 3 And m = 2 Then Print "("; b; "×"; a; ")"; "×";
If i = 4 And m = 1 Then Print "("; a; "÷"; b; ")"; "×";
If i = 4 And m = 2 Then Print "("; b; "÷"; a; ")"; "×";
If j = 1 And l = 1 Then
Print "("; c; "+"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 1 And l = 2 Then
Print "("; d; "+"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 1 Then
Print "("; c; "-"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 2 Then
Print "("; d; "-"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 1 Then
Print "("; c; "×"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 2 Then
Print "("; d; "×"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 1 Then
Print "("; c; "÷"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 2 Then
Print "("; d; "÷"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
End If
End If
If (k = 4) And (result2 <> 0) Then
result = result1 / result2
If Round(result, 4) = 24 Then
daan = True
If i = 1 And m = 1 Then Print "("; a; "+"; b; ")"; "÷";
If i = 1 And m = 2 Then Print "("; b; "+"; a; ")"; "÷";
If i = 2 And m = 1 Then Print "("; a; "-"; b; ")"; "÷";
If i = 2 And m = 2 Then Print "("; b; "-"; a; ")"; "÷";
If i = 3 And m = 1 Then Print "("; a; "×"; b; ")"; "÷";
If i = 3 And m = 2 Then Print "("; b; "×"; a; ")"; "÷";
If i = 4 And m = 1 Then Print "("; a; "÷"; b; ")"; "÷";
If i = 4 And m = 2 Then Print "("; b; "÷"; a; ")"; "÷";
If j = 1 And l = 1 Then
Print "("; c; "+"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 1 And l = 2 Then
Print "("; d; "+"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 1 Then
Print "("; c; "-"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 2 And l = 2 Then
Print "("; d; "-"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 1 Then
Print "("; c; "×"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 3 And l = 2 Then
Print "("; d; "×"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 1 Then
Print "("; c; "÷"; d; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
If j = 4 And l = 2 Then
Print "("; d; "÷"; c; ")"; "="; result; Space(10);
dyjs = dyjs + 1
If dyjs = 5 Then
dyjs = 0
Print
End If
End If
End If
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Sub xingshi2(a As Integer, b As Integer, c As Integer, d As Integer) '((a+b)+c)+d形式
Dim result1 As Single, result2 As Single, result As Single
Dim i As Integer, j As Integer, k As Integer 'i,j,k为运算符
For i = 1 To 4
If i = 1 Then
result1 = a + b 'result1 = a 与 b运算
ElseIf i = 2 Then
result1 = a - b
ElseIf i = 3 Then
result1 = a * b
ElseIf i = 4 Then
result1 = a / b
End If
For j = 1 To 4
If j = 1 Then
result2 = result1 + c
ElseIf j = 2 Then
result2 = result1 - c
ElseIf j = 3 Then
result2 = result1 * c
ElseIf j = 4 Then
result2 = result1 / c
End If
For k = 1 To 4
If k = 1 Then
result = result2 + d
If Round(result, 4) = 24 Then
Call shuchu1(a, b, c, d, i, j, k)
daan1 = True
End If
result = d + result2
If Round(result, 4) = 24 Then
Call shuchu2(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 2 Then
result = result2 - d
If Round(result, 4) = 24 Then
Call shuchu1(a, b, c, d, i, j, k)
daan1 = True
End If
result = d - result2
If Round(result, 4) = 24 Then
Call shuchu2(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 3 Then
result = result2 * d
If Round(result, 4) = 24 Then
Call shuchu1(a, b, c, d, i, j, k)
daan1 = True
End If
result = d * result2
If Round(result, 4) = 24 Then
Call shuchu2(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 4 Then
result = result2 / d
If Round(result, 4) = 24 Then
Call shuchu1(a, b, c, d, i, j, k)
daan1 = True
End If
If result2 <> 0 Then result = d / result2
If Round(result, 4) = 24 Then
Call shuchu2(a, b, c, d, i, j, k)
daan1 = True
End If
End If
Next k
Next j
Next i
End Sub
Sub xingshi3(a As Integer, b As Integer, c As Integer, d As Integer) '(a+(b+c))+d形式
Dim result1 As Single, result2 As Single, result As Single
Dim ms As Integer, ls As Integer, i As Integer, j As Integer, k As Integer
For i = 1 To 4
If i = 1 Then
result1 = b + c
ElseIf i = 2 Then
result1 = b - c
ElseIf i = 3 Then
result1 = b * c
ElseIf i = 4 Then
result1 = b / c
End If
For j = 1 To 4
If j = 1 Then
result2 = a + result1
ElseIf j = 2 Then
result2 = a - result1
ElseIf j = 3 Then
result2 = a * result1
ElseIf j = 4 And result1 <> 0 Then
result2 = a / result1
End If
For k = 1 To 4
If k = 1 Then
result = result2 + d
If Round(result, 4) = 24 Then
Call shuchu3(a, b, c, d, i, j, k)
daan1 = True
End If
result = d + result2
If Round(result, 4) = 24 Then
Call shuchu4(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 2 Then
result = result2 - d
If Round(result, 4) = 24 Then
Call shuchu3(a, b, c, d, i, j, k)
daan1 = True
End If
result = d - result2
If Round(result, 4) = 24 Then
Call shuchu4(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 3 Then
result = result2 * d
If Round(result, 4) = 24 Then
Call shuchu3(a, b, c, d, i, j, k)
daan1 = True
End If
result = d * result2
If Round(result, 4) = 24 Then
Call shuchu4(a, b, c, d, i, j, k)
daan1 = True
End If
ElseIf k = 4 Then
result = result2 / d
If Round(result, 4) = 24 Then
Call shuchu3(a, b, c, d, i, j, k)
daan1 = True
End If
If result2 <> 0 Then result = d / result2
If Round(result, 4) = 24 Then
Call shuchu4(a, b, c, d, i, j, k)
daan1 = True
End If
End If
Next k
Next j
Next i
End Sub
Private Sub Command2_Click() '对输入数据逐一测试(a+b)+(c+d)形式及((a+b)+c)+d)及(a+(b+c))+d)是否有解
Dim jh1 As Integer, jh2 As Integer, jsd1 As Integer, jsd2 As Integer, jhjs As Integer, jhz As Integer 'jhd1,jhd2
Dim sx(1 To 4) As Integer '临时储存4个数数组
jh1 = 2 '初值
jh2 = 3 '初值
jsd1 = 1 '初值
jsd2 = 4 '初值
jhjs = 1 '初值,a,b,c两两相同时记录交换次数
daan = False '初值
daan1 = False '初值
s(1) = Val(Text1)
s(2) = Val(Text2)
s(3) = Val(Text3)
s(4) = Val(Text4)
sx(1) = Val(Text1)
sx(2) = Val(Text2)
sx(3) = Val(Text3)
sx(4) = Val(Text4)
Call xingshi1(s(1), s(2), s(3), s(4)) '测试(a+b)+(c+d)是否有解
If s(1) <> s(2) And s(1) <> s(3) And s(1) <> s(4) And s(2) <> s(3) And s(2) <> s(4) And s(3) <> s(4) Then Call xingshi1(s(4), s(3), s(2), s(1)) '交换a,d是否有解
If s(1) = s(2) Then jsd1 = 2 '如果前两个数相等,交换次数减1
If s(3) = s(4) Then jsd2 = 3 '如果后两个数相等,交换次数减1
For jh1 = 2 To jsd1 Step -1
For jh2 = 3 To jsd2
If sx(jh1) <> sx(jh2) Then '交换b与c,b与d,a与c,a与d是否有解
t = sx(jh2)
sx(jh2) = sx(jh1)
sx(jh1) = t
Call xingshi1(sx(1), sx(2), sx(3), sx(4))
sx(1) = s(1)
sx(2) = s(2)
sx(3) = s(3)
sx(4) = s(4)
End If
Next jh2
Next jh1
If s(1) = s(2) And s(1) = s(3) And s(1) = s(4) And s(2) = s(3) And s(2) = s(4) And s(3) = s(4) Then '测试((a+b)+c)+d是否有解,全相等则不需交换
Call xingshi2(s(4), s(3), s(2), s(1))
Else
For jh1 = 1 To 4 'a,b,c依次与d交换,看是否有解
If (sx(jh1) <> sx(4) And jhz <> sx(jh1)) Or jh1 = 4 Then '与d不同,以前交换记录值不同才进行交换,jh1 = 4时,测试((a+b)+c)+d是否有解
t = sx(4)
sx(4) = sx(jh1)
jhz = sx(jh1)
sx(jh1) = t
For jh2 = 1 To 3 'a,b,c相互交换
If sx(1) = sx(2) And sx(3) = sx(2) Then 'a,b,c均相同不交换
Call xingshi2(sx(1), sx(2), sx(3), sx(4))
Exit For
ElseIf sx(1) = sx(2) And sx(3) <> sx(2) Then 'a,b相同
If jhjs = 1 Then '交换1次
Call xingshi2(sx(1), sx(2), sx(3), sx(4)) '((a+b)+c)+d
End If
If jhjs = 2 Then '交换2次
Call xingshi2(sx(1), sx(3), sx(2), sx(4)) '((a+c)+b)+d
End If
If jhjs = 3 Then '交换3次
Call xingshi2(sx(3), sx(1), sx(2), sx(4)) '((c+a)+b)+d
jhjs = 0 '交换次数清零
End If
jhjs = jhjs + 1
ElseIf sx(1) = sx(3) And sx(3) <> sx(2) Then
If jhjs = 1 Then
Call xingshi2(sx(1), sx(2), sx(3), sx(4))
End If
If jhjs = 2 Then
Call xingshi2(sx(2), sx(3), sx(1), sx(4))
End If
If jhjs = 3 Then
Call xingshi2(sx(3), sx(1), sx(2), sx(4))
jhjs = 0
End If
jhjs = jhjs + 1
ElseIf sx(2) = sx(3) And sx(1) <> sx(2) Then
If jhjs = 1 Then
Call xingshi2(sx(1), sx(2), sx(3), sx(4))
End If
If jhjs = 2 Then
Call xingshi2(sx(2), sx(3), sx(1), sx(4))
End If
If jhjs = 3 Then
Call xingshi2(sx(3), sx(1), sx(2), sx(4))
jhjs = 0
End If
jhjs = jhjs + 1
Else
If sx(2) <> sx(3) Then
t = sx(2)
sx(2) = sx(3)
sx(3) = t
Call xingshi2(sx(1), sx(2), sx(3), sx(4))
End If
If sx(1) <> sx(2) Then
t = sx(1)
sx(1) = sx(2)
sx(2) = t
Call xingshi2(sx(1), sx(2), sx(3), sx(4))
End If
End If
Next jh2
End If
sx(1) = s(1) '还原数组
sx(2) = s(2)
sx(3) = s(3)
sx(4) = s(4)
Next jh1
End If
If s(1) = s(2) And s(1) = s(3) And s(1) = s(4) And s(2) = s(3) And s(2) = s(4) And s(3) = s(4) Then
Call xingshi3(s(4), s(3), s(2), s(1))
Else
For jh1 = 1 To 4
If (sx(jh1) <> sx(4) And jhz <> sx(jh1)) Or jh1 = 4 Then
t = sx(4)
sx(4) = sx(jh1)
jhz = sx(jh1)
sx(jh1) = t
For jh2 = 1 To 3
If sx(1) = sx(2) And sx(3) = sx(2) Then
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
Exit For
ElseIf sx(1) = sx(2) And sx(3) <> sx(2) Then
If jhjs = 1 Then
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
End If
If jhjs = 2 Then
Call xingshi3(sx(1), sx(3), sx(2), sx(4))
End If
If jhjs = 3 Then
Call xingshi3(sx(3), sx(1), sx(2), sx(4))
jhjs = 0
End If
jhjs = jhjs + 1
ElseIf sx(1) = sx(3) And sx(3) <> sx(2) Then
If jhjs = 1 Then
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
End If
If jhjs = 2 Then
Call xingshi3(sx(2), sx(3), sx(1), sx(4))
End If
If jhjs = 3 Then
Call xingshi3(sx(3), sx(1), sx(2), sx(4))
jhjs = 0
End If
jhjs = jhjs + 1
ElseIf sx(2) = sx(3) And sx(1) <> sx(2) Then
If jhjs = 1 Then
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
End If
If jhjs = 2 Then
Call xingshi3(sx(2), sx(3), sx(1), sx(4))
End If
If jhjs = 3 Then
Call xingshi3(sx(3), sx(1), sx(2), sx(4))
jhjs = 0
End If
jhjs = jhjs + 1
Else
If sx(2) <> sx(3) Then
t = sx(2)
sx(2) = sx(3)
sx(3) = t
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
End If
If sx(1) <> sx(2) Then
t = sx(1)
sx(1) = sx(2)
sx(2) = t
Call xingshi3(sx(1), sx(2), sx(3), sx(4))
End If
End If
Next jh2
End If
sx(1) = s(1)
sx(2) = s(2)
sx(3) = s(3)
sx(4) = s(4)
Next jh1
End If
If daan = False And daan1 = False Then msg = MsgBox("无法解出答案", okonly, "警告")
End Sub
Private Sub Command3_Click()
s(1) = Val(Text1)
s(2) = Val(Text2)
s(3) = Val(Text3)
s(4) = Val(Text4)
End Sub
Private Sub Command4_Click()
Form1.Cls
End Sub
Private Sub Form_Load()
dyjs = 0
End Sub
- 一个求24点所有可能解的VB源代码及程序实现
- 求一个集合所有可能的子集
- 用vb.net实现类似写字板程序的部分源代码
- 24点游戏的c++代码,能够输出所有可能的解
- 求个C语言源代码~一个简单的小程序
- 求的数组中不定元素的和为一个定制的所有可能
- 给定一个入栈序列,求所有可能的出栈序列
- 给定一个入栈序列,求所有可能的出栈序列
- 给定一个入栈序列,求所有可能的出栈序列
- 求一个简单的源代码
- 求一个集合的所有子集(二进制实现)
- 求一个区间内所有的质数(C++实现)
- 求一个集合所有子集的Python实现
- 求24点表达式的php实现
- c++的一个求最大公约数和最小公倍数的简单程序,求给点意见!
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 关于LayoutInflate详细解释
- 开源项目SlideMenu使用详解
- android log 学习
- PHP环境搭建
- unity3d中材质球纹理的滚动
- 一个求24点所有可能解的VB源代码及程序实现
- HashMap 和 HashTable 的区别
- linux/windows下获取gcc(mingw)编译器预定义宏的方式
- Advantages of AMQP over JMS
- mysql常用命令
- C++ 参数按值传递以及按地址传递
- 在JBoss AS 7中将项目指定至'/'根目录
- C/S和B/S架构的区别
- Hadoop II Windows下安装hadoop2.6.0-eclipse-plugin插件