5,5,5,1四个数用+,-,*,/如何得到24

解决方案 »

  1.   

    类似计算加减乘除二十四的算法    
      (*// 
    标题:类似计算加减乘除二十四的算法说明:参考 http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=422修改:Zswang日期:2003-03-17支持:[email protected]//*)///////Begin Sourcefunction SearchExpression(mNumbers: array of Integer;mDest: Integer): string;constcPrecision = 1E-6;varvNumbers: array of Extended;vExpressions: array of string;vLength: Integer;function fSearchExpression(mLevel: Integer): Boolean;varI, J: Integer;A, B: Extended;vExpA, vExpB: string;beginResult := True;if (mLevel <= 1) and (Abs(vNumbers[0] - mDest) <= cPrecision) then Exit;for I := 0 to mLevel - 1 do beginfor J := I + 1 to mLevel - 1 do beginA := vNumbers[I];B := vNumbers[J];vNumbers[J] := vNumbers[mLevel - 1];vExpA := vExpressions[I];vExpB := vExpressions[J];vExpressions[J] := vExpressions[mLevel - 1];vExpressions[I] := '(' + vExpA + '+' + vExpB + ')';vNumbers[I] := A + B;if fSearchExpression(mLevel - 1) then Exit;vExpressions[I] := '(' + vExpA + '-' + vExpB + ')';vNumbers[I] := A - B;if fSearchExpression(mLevel - 1) then Exit;vExpressions[I] := '(' + vExpB + '-' + vExpA + ')';vNumbers[I] := B - A;if fSearchExpression(mLevel - 1) then Exit;vExpressions[I] := '(' + vExpA + '*' + vExpB + ')';vNumbers[I] := A * B;if fSearchExpression(mLevel - 1) then Exit;if B <> 0 then beginvExpressions[I] := '(' + vExpA + '/' + vExpB + ')';vNumbers[I] := A / B;if fSearchExpression(mLevel - 1) then Exit;end;if A <> 0 then beginvExpressions[I] := '(' + vExpB + '/' + vExpA + ')';vNumbers[I] := B / A;if fSearchExpression(mLevel - 1) then Exit;end;vNumbers[I] := A;vNumbers[J] := B;vExpressions[I] := vExpA;vExpressions[J] := vExpB;end;end;Result := False;end;varI: Integer;beginvLength := Length(mNumbers);SetLength(vNumbers, vLength);SetLength(vExpressions, vLength);for I := 0 to vLength - 1 do beginvNumbers[I] := mNumbers[I];vExpressions[I] := IntToStr(mNumbers[I]);end;if fSearchExpression(vLength) thenResult := vExpressions[0]else Result := '';vNumbers := nil;vExpressions := nil;end;///////End Source///////Begin Demoprocedure TForm1.Button1Click(Sender: TObject);beginEdit1.Text := SearchExpression([5, 5, 5, 1], 24);end;///////End Demo 
    不要谢我,因为不是我写的代码,而是: 伴水
      

  2.   

    www.e-gotop.com/51ds/othersoft/2436p.zip让你算个够。