bài giải nè:
Const t1 = 'chenxau.inp';
t2 = 'chenxau.out';
dau: array[1..3] of String[1]= ('', '-', '+');
s:array[1..9] of char=('1','2','3','4','5','6','7','8','9');
Var d:array[1..9] of String[1];
m:longInt;
fi,fo:text;
k:integer;
found:boolean;
procedure mo;
begin
assign(fi,t1);reset(fi);
assign(fo,t2);rewrite(fo);
end;
Procedure Nhap;
Begin
Read(fi,m);
found:=false;
end;
Function tinh(s:string):longint;
Var i,t:longint;
code:integer;
Begin
i:=length(s);
While not(s[i] in ['-','+']) and (i>0) do dec(i);
val(copy(s,i+1,length(s)-i),t,code);
If i=0 then begin tinh:=t; exit; end
else
begin
delete(s,i,length(s)-i+1);
If s[i]='+' then tinh:=t+tinh(s);
If s[i]='-' then tinh:=tinh(s)-t;
end;
End;
Procedure Xuat(i:integer);
Var st:string; j:integer;
Begin
st:='';
For j:=1 to i do st:=st+d[j]+s[j];
If Tinh(st) = m then begin writeln(fo,st); found:=true; end;
End;
Procedure Try(i:integer);
Var j:integer;
Begin
for j:=1 to 3 do
begin
d[i]:=dau[j];
If i<9 then try(i+1);
If i=9 then Xuat(i);
end;
End;
procedure dong;
begin
close(fi);close(fo);
end;
BEGIN
mo;
nhap;
for k:=1 to 2 do
begin
d[1]:=dau[k];
Try(2);
end;
If not found then write(fo,'khong co ngiem');
END.
Bookmarks