白开心

  IT博客 :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  9 随笔 :: 76 文章 :: 28 评论 :: 0 Trackbacks

 

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'
24点算法
'
调用示例 GetNum(6,6,6,6)
Sub GetNum(One,Two,Three,Four)
'24算法,主函数.掉用方法 GetNum(3,3,8,8) .即返回计算24点结果
 Dim Varry(4)
 Varry(
0= One
 Varry(
1= Two
 Varry(
2= Three
 Varry(
3= Four
 
For i = 0 to 3
 a 
= Varry(i)
  
For j = 0 to 3
  
If j <> i Then
  b 
= Varry(j)
   
For k = 0 to 3
    
if k <> j and k <> i Then
     c 
= Varry(k)
     l 
= 1+2+3 - i - j - k
     d 
= Varry(l)
     
     
If Count24(a,b,c,d)=True Then Exit Sub
    
end if
   
Next
  
End If
  
Next
 
Next
  Response.Write(
"对不起,找不到合适的方法构成24点")
End Sub 

Function TrueOrFalse(Method,Str)
 
If Method="/" And Str=0 Then 
  TrueOrFalse
=False
 
Else
  TrueOrFalse
=True
 
End If
End Function 

Function GetMathod(str)
 
Select Case Str
  
Case 1
   GetMathod 
= "+"
  
Case 2
   GetMathod 
= "-"
  
Case 3
   GetMathod 
= "*"
  
Case 4
   GetMathod 
= "/"
 
End Select
End Function 

Function Count24(a,b,c,d)
'2005-9-22,HJ,更新。
Dim abc1,abcd2,abcd3,abcd1,abcd4,abcd5,abc
 
For i = 1 to 4
 
If TrueOrFalse(GetMathod(i),b)=False Then i=i+1
  ab 
= Eval(a & GetMathod(i) & b)
  
For j = 1 to 4
  
If TrueOrFalse(GetMathod(j),c)=False Then j=j+1
   abc 
= Eval(ab & GetMathod(j) & c)
   
'***************************************
   '漏掉
   if ab<>0 Then abc1 = c / ab
   abc2 
= c - ab
   
'***************************************
   For k = 1 to 4
   
   
If TrueOrFalse(GetMathod(k),d)=False Then k=k+1
    abcd 
= Eval(abc & GetMathod(k) & d)
    
'****************************************************
    '补充各种情况
    abcd2 = Eval(abc1 & GetMathod(k) & d)
    abcd4 
= Eval(abc2 & GetMathod(k) & d)
    
If abc<>0 Then abcd1 = d / abc
    
If abc1<>0 and abc1<>"" Then abcd3 = d / abc1
    
if abc2>0 Then abcd5 = d / abc2
    
'****************************************************
    
    
If Trim(abcd)=24 then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(ab 
& GetMathod(j) & c &" = " &abc &"<br>")
     Response.Write(abc 
& GetMathod(k) & d & " = "&abcd &"<br>")
     Response.Write(
"(("&& GetMathod(i) & b &")"& GetMathod(j) & c &")" & GetMathod(k) & d & " = "&abcd &"<br>")
     
Exit Function
    
ElseIf Trim(abcd1) = 24 Then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(ab 
& GetMathod(j) & c &" = " &abc &"<br>")
     Response.Write(d 
&"/" &abc& " = "&abcd &"<br>")
     Response.Write(d 
&"/(("&& GetMathod(i) & b &")"& GetMathod(j) & c &") = "&abcd1 &"<br>")
     
Exit Function
    
ElseIf Trim(abcd2) = 24 Then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(c 
&"/"& ab &"" & abc1 &"<br>")
     Response.Write(abc1 
& GetMathod(k) & d& " = "&abcd &"<br>")
     Response.Write(
"("&c&"/("&& GetMathod(i) & b &"))"& GetMathod(k) & d &" = "&abcd2 &"<br>")
     
Exit Function
    
ElseIf Trim(abcd3) = 24 Then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(c 
&"/"& ab &"" & abc1 &"<br>")
     Response.Write(d 
&"/"& abc1 &"="&abcd3 &"<br>")
     Response.Write(d 
&"/("&c&"/("&& GetMathod(i) & b &")) = "&abcd3 &"<br>")
     
Exit Function
    
ElseIf Trim(abcd4) = 24 Then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(c 
&"-"& ab &"" & abc2 &"<br>")
     Response.Write(abc2 
& GetMathod(k) & d&"="&abcd4 &"<br>")
     Response.Write(
"("&c&"-("&& GetMathod(i) & b &"))"& GetMathod(k) & d &" = "&abcd4 &"<br>")
     
Exit Function
    
ElseIf cint(abcd5) = 24 Then
     Count24 
= True
     Response.Write(
"给出数字:"&a&","&b&","&c&","&d&","&"结果:<br>")
     Response.Write(a 
& GetMathod(i) & b &" = " & ab &"<br>")
     Response.Write(c 
&"-"& ab &"" & abc2 &"<br>")
     Response.Write(abc2 
& GetMathod(k) & d&"="&abcd4 &"<br>")
     Response.Write(d
&"/("&c&"-("&& GetMathod(i) & b &")) = "&abcd5 &"<br>")
     
Exit Function
    
end If
   
Next
  
Next
 
Next
 Count24 
= False
End Function
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
posted on 2005-12-11 21:24 白开心 阅读(287) 评论(0)  编辑 收藏 引用 所属分类: Asp+vbScript
只有注册用户登录后才能发表评论。