Cho dãy số nguyên A = {a1, a2, a3, ..., an} và một số K (được nhập vào từ phím). Hãy viết chương trình in ra tất cả các phần tử mà tổng các phần tử đó bằng K. Mỗi phần tử được sử dụng một lần
Ví dụ: A= {2 3 6 7 1 4 5}; K=5
Ta có các dãy số là: {2 3}; {1 4}
Lời giải tham khảo
Const fi='ptk.inp';
fo='ptk.out';
nmax = 100;
var n:Byte;
k:Integer;
a:array[1..nmax] of integer;
cx:array[1..nmax] of boolean;
f:text;
procedure Dulieu;
Var f:text; i:byte;
Begin
assign(f,fi);
reset(f);
readln(f,n,k);
for i:=1 to n do read(f,a[i]);
close(f);
end;
procedure ghinhan;
var i:integer;
begin
for i:=1 to n do
if not cx[i] then
write(f,a[i]:5);
writeln(f);
end;
procedure try(S:Integer;i:byte);
var j:byte;
Begin
if S = 0 then ghinhan
else
begin
for j:=i to n do
if cx[j] then
begin
cx[j]:=false;
try(s-a[j],j+1);
cx[j]:=true;
end;
end;
End;
BEGIN
Dulieu;
assign(f,fo);
rewrite(f);
fillchar(cx,sizeof(cx),true);
Try(K,1);
close(f);
END.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét