GIẢI ĐỀ THI TIN HỌC TRẺ CẤP TỈNH AN GIANG 2021 (BÀI 2 - DÃY CON CÓ TỔNG BẰNG S)

Cho dãy a1, a2,…,an (với ai là số tự nhiên). Tìm các dãy con đó có tổng bằng S

          Input (dữ liệu nhập) cho trong tập tin BAI02.INP gồm hai dòng:

          - Dòng đầu tiên là số nguyên n (1<n<30) và số S (0<S<1000) cách nhau bởi một khoảng trắng.

          - Dòng thứ hai gồm n số của dãy số a1, a2,…,an, mỗi số cách nhau một khoảng trắng.

          Output (dữ liệu xuất) ghi vào tập tin BAI02.OUT gồm nhiều dòng, mỗi dòng ghi một phương án các giá trị ai sao cho tổng bằng S. Trong trường hợp không tìm được thì ghi là “khong co day con co tong bang S (ghi gia tri cua S)”.

          Ví dụ:

BAI02.INP

BAI02.OUT

7 26

4 2 5 1 6 8 3

4 2 5 1 6 8

4 5 6 8 3

 CODE THAM KHẢO:

program daycon_tongbangS;

var n,s,tong: integer;

    x, a: array[1..40] of integer;

    fi, fo: text;

procedure Nhap;

var i:byte;

begin

        assign(fi,'BAI02.INP'); reset(fi);

        readln(fi,n,s);

        for i:=1 to n do read(fi,a[i]);

        close(fi);

end;

procedure Xuat;

var k:byte;

begin

        for k:=1 to n do

        if x[k] = 1 then write(fo,a[k],' ');

        writeln(fo);

end;

procedure try(i:byte);

var j:byte;

begin

        for j:=1 downto 0 do

        begin

                x[i]:=j;

                tong:=tong+x[i]*a[i];

                if tong = s then Xuat

                else

                   if (tong < s) and (i<n) then try(i+1);

                tong:=tong-x[i]*a[i];

        end;

end;

begin

     Nhap;

     assign(fo,'BAI02.OUT'); rewrite(fo);

     tong:=0;

     try(1);

     close(fo);

end.



Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget