10.05.2017

Tổng phần tử bằng k

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