Trang 2 của 2 Đầu tiênĐầu tiên 12
Kết quả 11 đến 13 của 13
  1. #11
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tengiday
    Bạn bỏ dòng " write(a[t - 1], ' ') " trong phần if đầu tiên " if (a[t] = a[t - 1]) " xem thử. Mình viết vội nên ko test hết.
    Bạn cho mình xem nguyên code nhé, như vậy sẽ dễ biết hơn.
    Xin lỗi a hổm rài bận quá. Code e đây có gì a sửa giúp e nha!!!
    Mã:
    const fi='d:\pascal\qhd\bottles\input.txt';var i,n:longint; f,a:array[0..100] of longint;
    procedure input;
    var f:text;
    begin
        assign(f,fi);
        reset(f);
        readln(f,n);
        for i:=1 to n do read(f,a[i]);
        close(f);
    end;
    function max(a,b:longint):longint;
    begin
        if a>b then exit(a) else exit(b);
    end;
    procedure qhd;
    begin
        f[1]:=a[1]; f[2]:=a[1]+a[2];
        f[3]:=max(max(a[1]+a[2],a[2]+a[3]),a[1]+a[3]);
        for i:=4 to n do
            f[i]:=max(f[i-2]+a[i],f[i-3]+a[i-1]+a[i]);
    end;
    procedure rslt;
    var t:longint;
    begin
        t := n;
    while (t > 3) do
       begin
          if (f[t] = f[t - 1]) then
          begin
             t := t - 1;
          end
          else if (f[t] = f[t - 3] + a[t - 1] + a[t]) then
             begin
                write(a[t], ' ', a[t - 1], ' ');
                t := t - 3;
             end
             else if (f[t] = f[t - 2] + a[t]) then
                begin
                    write(a[t], ' ');
                    t := t - 2;
                end;
            end;
    end;
    begin
        input;
        qhd;
        rslt;
        readln; end.

  2. #12
    Ngày tham gia
    May 2016
    Bài viết
    0
    Đoạn codes này của bạn cần thêm vào tí xíu nữa mới hoàn thành được.
    1) Trong procedure qhd, cần phải lấy thêm max của F[i - 1] luôn. Lý do là theo cách mình đặt hàm F, thì F[i] là dung tích max khi uống tới chai thứ i, nhưng ko biết đc là có uống chai thứ i hay không uống chai thứ i. Để thấy điều này, bạn lấy test ở post #6 của mình là thấy:
    Output đúng là 15 4 2 3 (F[6] = 24).
    Nếu ko lấy max của F[i - 1] thì output sẽ ra là 2 15 2 3 (F[6] = 22).

    2) Sau khi ra khỏi dòng while loop rồi, bạn cần xử lý trường hợp t = 1, 2, 3. Cách làm cũng tương tự như trong vòng loop; bạn có thể nhìn vào cách khởi tạo của mảng F để xem thử giá trị của nó đến từ phần tử nào nhé.

    Good luck.

  3. #13
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tengiday
    Đoạn codes này của bạn cần thêm vào tí xíu nữa mới hoàn thành được.
    1) Trong procedure qhd, cần phải lấy thêm max của F[i - 1] luôn. Lý do là theo cách mình đặt hàm F, thì F[i] là dung tích max khi uống tới chai thứ i, nhưng ko biết đc là có uống chai thứ i hay không uống chai thứ i. Để thấy điều này, bạn lấy test ở post #6 của mình là thấy:
    Output đúng là 15 4 2 3 (F[6] = 24).
    Nếu ko lấy max của F[i - 1] thì output sẽ ra là 2 15 2 3 (F[6] = 22).

    2) Sau khi ra khỏi dòng while loop rồi, bạn cần xử lý trường hợp t = 1, 2, 3. Cách làm cũng tương tự như trong vòng loop; bạn có thể nhìn vào cách khởi tạo của mảng F để xem thử giá trị của nó đến từ phần tử nào nhé.

    Good luck.
    Cảm ơn a nhé...Để e làm lại r có j nhờ a chỉ bảo thêm

 

 
Trang 2 của 2 Đầu tiênĐầu tiên 12

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 05:21 PM.
Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.