30/09/2018, 17:21

Hỏi về thoát khỏi đệ quy trong pascal

Mọi người cho em hỏi là trong pascal, làm sao để thoát hoàn toàn khỏi đệ quy và quay lại chương trình chính

Tiễn viết 19:26 ngày 30/09/2018

Cho đệ quy một điểm dừng, còn ko thì thoát cả chương trình bằng halt()

Lê Thiên Cường viết 19:27 ngày 30/09/2018
----------
 PROCEDURE chiaqua(dem:INTEGER);
    VAR j:INTEGER;
    BEGIN
      FOR j:=n DOWNTO 1 DO
        IF (dem=n DIV k) AND (t+j=s) AND (b[j]=true) THEN
          BEGIN
            a[1][dem]:=j;
            exit;
          END
        ELSE
          IF (dem<n DIV k) AND (t+j<s) AND (b[j]=true) THEN
            BEGIN
              a[1][dem]:=j;
              t:=t+j;
              b[j]:=false;
              chiaqua(dem+1);
              b[j]:=true;
              t:=t-j;
            END;
    END;

Bạn giúp mình sửa điểm dừng được không?

Tiễn viết 19:21 ngày 30/09/2018

Bạn có thể up cả bài và đề lên ko

Lê Thiên Cường viết 19:26 ngày 30/09/2018

Đề:


Chia quà
Ban tổ chức kỳ thi Olympic tin hoc 2007 nhận được từ các nhà tài trợ N gói quà đánh số từ 1 đến N và có giá trị khác nhau tương ứng từ 1 đến N. Ban tổ chức muố chí tất cả N gói quà cho K học sinh tham gia Olimpic saôch mỗi học sinh nhận được số lượng gói quà như nhau và có tổng giá trị như nhau.
Nhập vào từ bàn phím N: hai số nguyên dương N và K (1=N, K=200).
Xuất ra màn hình: K dòng, mỗi dòng gồm N /k số là giá trị các gói quà của mỗi học sinh nhận được. Nếu có nhiều cách chia quà thoả mãn yêu cầu thì chỉ cần đưa ra một phương án.
Trong trường hợp không có cách chia quà thoả mãn yêu cầu thì ghi số 0.
Ví dụ N = 8 và K =2 thì học sinh thứ nhất sẽ nhận các gói quà 1, 4, 6, 7 và học sinh thứ hai sẽ nhận các gói quµ 2,3,5,8.

Mình đang mắc ở trường hợp N là số lẻ
Cảm ơn bạn giúp đỡ!

Tiễn viết 19:27 ngày 30/09/2018

Nếu N % k != 0 (Không có cách chia để mỗi học sinh nhận được số gói quà = nhau) hoặc (N*(N+1)/2) % K != 0 (Không có cách chia để mỗi học sinh nhận được phần quà có giá trị như nhau) thì không có cách chia và bài này nếu xài đệ quy thì độ phức tạp cực lớn (200!) nên khi bạn chạy với N và K lớn thì phải đợi rất lâu

Lê Thiên Cường viết 19:26 ngày 30/09/2018

Mình muốn hỏi là nếu N là số lẻ và có cách chia thì tư tưởng là gì?

Tiễn viết 19:30 ngày 30/09/2018

Thì ta có mỗi học sinh sẽ nhận đc (N/k) gói quà và tổng giá trị mỗi phần quà là ( (N*(N+1)/2) / K).

Bài liên quan
0