求24点的算法!

来源:百度知道 编辑:UC知道 时间:2024/05/12 13:04:59
如果可以用pascal就更好了
最好不是穷举表达式的方法

http://www.dffy.com/tool/24.htm

穷举丁,低效率……
var
a,r:array[1..4]of longint;
b:array[1..4]of boolean;
i:longint;
c:char;
t:boolean;
function f(x,y:real;a:longint):real;
begin
case a of
0:f:=x+y;
1:f:=x-y;
2:f:=x*y;
3:begin t:=false; if y>0 then begin t:=true;f:=x/y; end;end;
end;
end;
procedure pp;
var i,j,k:longint;
begin
for i:=0 to 3 do
for j:=0 to 3 do
for k:=0 to 3 do begin
if t and(f(f(f(a[1],a[2],i),a[3],j),a[4],k)=24) then begin writeln('yes');halt; end;
if t and(f(f(a[1],a[2],i),f(a[3],a[4],k),j)=24) then begin writeln('yes');halt; end;
if t and(f(f(a[1],f(a[2],a[3],j),i),a[4],k)=24) then begin writeln('yes');halt; end;
if t and(f(a