5,5,5,1四个数用+,-,*,/如何得到24 5,5,5,1四个数用+,-,*,/如何得到24 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类似计算加减乘除二十四的算法 (*// 标题:类似计算加减乘除二十四的算法说明:参考 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 不要谢我,因为不是我写的代码,而是: 伴水 www.e-gotop.com/51ds/othersoft/2436p.zip让你算个够。 delphi 文件上传数据库(oracle) fastreport iff语句报错 delphi7写的程序可以在vista,win7下运行吗? ADODataSet控件详解 listview选中时有一个蓝条,有没有办法不显示出来急。。。。。。。 websnap下如何选择显示DLL中的页面 关于ADODATASET执行存储过程的问题,巨难!!! 用过fastreport的朋友请进。。。 我的SQL2000用了混合认证模式,为什么使用程序之前还要登录服务器才能连接? 急!急!急!我很迷惑! 为什么我在EDIT里面输入数据却不显示呢 Sql
(*//
标题:类似计算加减乘除二十四的算法说明:参考 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
不要谢我,因为不是我写的代码,而是: 伴水