[算24] 3,8,3,8如何算24? 3,8,3,8如何算24? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to darksinada(也性,色,食) 一楼计算出来的是8呀,我要的是24呀 (*//标题:类似计算加减乘除二十四的算法说明:参考 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;const cPrecision = 1E-6;var vNumbers: array of Extended; vExpressions: array of string; vLength: Integer; function fSearchExpression(mLevel: Integer): Boolean; var I, J: Integer; A, B: Extended; vExpA, vExpB: string; begin Result := True; if (mLevel <= 1) and (Abs(vNumbers[0] - mDest) <= cPrecision) then Exit; for I := 0 to mLevel - 1 do begin for J := I + 1 to mLevel - 1 do begin A := 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 begin vExpressions[I] := '(' + vExpA + '/' + vExpB + ')'; vNumbers[I] := A / B; if fSearchExpression(mLevel - 1) then Exit; end; if A <> 0 then begin vExpressions[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;var I: Integer;begin vLength := Length(mNumbers); SetLength(vNumbers, vLength); SetLength(vExpressions, vLength); for I := 0 to vLength - 1 do begin vNumbers[I] := mNumbers[I]; vExpressions[I] := IntToStr(mNumbers[I]); end; if fSearchExpression(vLength) then Result := vExpressions[0] else Result := ''; vNumbers := nil; vExpressions := nil;end;///////End Source///////Begin Demoprocedure TForm1.Button1Click(Sender: TObject);begin Edit1.Text := SearchExpression([5, 5, 5, 1], 24);end;///////End Demo C# 项目合并 怎么样获取枚举机器上所有打印机的相关信息(打印机名、IP、型号) GridView中数据行上下移动 string的日期 轉MSSQL的Date 如何在网页中调用应用程序?这里已经解决! vs2003两个简单问题 如何取得本地驱动器的类型?急 请教{1:F3} #标题党#[ASP.NET]请问为什么老是出现Server Application Unavailable 请问string.Split()方法只能把单个字节做为分隔符吗?如果我想把一个字符串做为分隔符怎么办? c#紧缩框架中如何调用本地应用程序 请教一个问题
一楼计算出来的是8呀,我要的是24呀
标题:类似计算加减乘除二十四的算法
说明:参考 http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=422
修改:Zswang
日期:2003-03-17
支持:[email protected]
//*)///////Begin Source
function SearchExpression(mNumbers: array of Integer;
mDest: Integer): string;
const
cPrecision = 1E-6;var
vNumbers: array of Extended;
vExpressions: array of string;
vLength: Integer; function fSearchExpression(mLevel: Integer): Boolean;
var
I, J: Integer;
A, B: Extended;
vExpA, vExpB: string;
begin
Result := True;
if (mLevel <= 1) and (Abs(vNumbers[0] - mDest) <= cPrecision) then Exit; for I := 0 to mLevel - 1 do begin
for J := I + 1 to mLevel - 1 do begin
A := 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 begin
vExpressions[I] := '(' + vExpA + '/' + vExpB + ')';
vNumbers[I] := A / B;
if fSearchExpression(mLevel - 1) then Exit;
end;
if A <> 0 then begin
vExpressions[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;var
I: Integer;
begin
vLength := Length(mNumbers);
SetLength(vNumbers, vLength);
SetLength(vExpressions, vLength);
for I := 0 to vLength - 1 do begin
vNumbers[I] := mNumbers[I];
vExpressions[I] := IntToStr(mNumbers[I]);
end;
if fSearchExpression(vLength) then
Result := vExpressions[0]
else Result := '';
vNumbers := nil;
vExpressions := nil;
end;
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := SearchExpression([5, 5, 5, 1], 24);
end;
///////End Demo