Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 16
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Bài tập Pascal: Mọi người cho ý kiến giúp

    Trò chơi với băng số (Tên file Div.pas)
    Cho một băng số gồm n số nguyên dương, mỗi số được viết trên một ô. Hãy cắt băng số này thành nhiều đoạn nhất sao cho tổng các phần tử trong các đoạn là bằng nhau.
    Nhập vào : Từ bàn phím + Dòng đầu ghi n
    + Dòng tiếp theo ghi n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ..., a<sub>n</sub>
    (các số nằm trên một dòng cách nhau bởi một dấu cách, a<sub>i</sub> ≤ 1000)
    In ra : màn hình Ghi K là số đoạn cần chia.

    <div><table align="center"><tr valign="top"><td>10
    2
    6
    2
    5
    2
    1
    2



    </td>
    </tr>
    </table></div>
    <div><table><tr valign="top"><td><div><table align="center"><tr valign="top"><td>10


    </td>
    <td>2
    6
    2


    </td>
    <td>5
    2
    1
    2


    </td>
    </tr>
    </table></div>
    </td>
    </tr>
    </table></div>
    Ví dụ:


    Nhập
    In ra
    Giải thích

    8
    10 2 6 2 5 2 1 2
    3

    Đoạn 1: 10
    Đoạn 2: 2 + 6 + 2 =10
    Đoạn 3: 5 + 2 + 1 + 2 = 10

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Đề bài này khó hiểu thế nhỉ, bạn cho vài ví dụ nữa đi. Ví dụ nhập 7 thì nó ra thế nào, mình chả tìm ra được [IMG]images/icons/1.gif[/IMG]

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    173
    Mình đọc mà chả biết bạn đang viết cái gì luôn [IMG]images/smilies/troll/superman.jpg[/IMG]

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    í tưởng
    khởi tạo mảng. nhập mảng. khởi tạo biến dem=1
    k=? . cho vòng lặp . 0 tới n-1 . nếu có phần tử nào = k thì in ra . xóa phần tử đó khỏi mảng. biến dem++
    tạo hàm tính tổng lần lượt 1 mảng.
    cho vòng lặp. từ 0 tới n-dem .tính tổng lần lượt
    vd. i=0. a0+a1 so sánh vs k . khác k tính tiếp a0+a1+a2 ...
    i=1. a1+a2 ...
    nếu bằng k im ra xóa phần tử khỏi mảng. bé hươn cộng tiếp.
    lớn hơn. a1+a2 > k bỏ qua a2. làm bước tính tiếp theo
    nếu ai lớn hơn k thì continue [IMG]images/icons/1.gif[/IMG]
    k biết code nó có tối ưu dc k . tại chưa có máy để test

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi taplamhacker
    í tưởng
    khởi tạo mảng. nhập mảng. khởi tạo biến dem=1
    k=? . cho vòng lặp . 0 tới n-1 . nếu có phần tử nào = k thì in ra . xóa phần tử đó khỏi mảng. biến dem++
    tạo hàm tính tổng lần lượt 1 mảng.
    cho vòng lặp. từ 0 tới n-dem .tính tổng lần lượt
    vd. i=0. a0+a1 so sánh vs k . khác k tính tiếp a0+a1+a2 ...
    i=1. a1+a2 ...
    nếu bằng k im ra xóa phần tử khỏi mảng. bé hươn cộng tiếp.
    lớn hơn. a1+a2 > k bỏ qua a2. làm bước tính tiếp theo
    nếu ai lớn hơn k thì continue [IMG]images/icons/1.gif[/IMG]
    k biết code nó có tối ưu dc k . tại chưa có máy để test
    1 Hacker diễn đàn cho biết ==[IMG]images/icons/24.gif[/IMG]

  6. #6
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    Trích dẫn Gửi bởi quanltv
    Đề bài này khó hiểu thế nhỉ, bạn cho vài ví dụ nữa đi. Ví dụ nhập 7 thì nó ra thế nào, mình chả tìm ra được [IMG]images/icons/1.gif[/IMG]
    Ví dụ: nhập vào 5 thì gồm 5 phần tử:
    Các phần tử cụ thể là: 1 2 3 4 5.
    THì chia thành 3 đoạn, mỗi đoạn có tổng bằng 5.
    Đoạn 1: 5
    Đoạn 2: 2 3.
    Đoạn 3: 1 4.

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Không có ai cho ý kiến giúp mình nữa à, bó tay bày này rồi

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Theo mình thì sử dụng đệ quy. Nhưng sẽ khá là mất thời gian.

    Xét các trường hợp từ chia thành K= 2->N đoạn.

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    thuật toán của m như này nhưng ko biết có ổn ko.
    tìm max=số lớn nhất của dãy.
    gán i:=1;a:=0;dem:=0;
    repeat
    a:=a+số thứ i (tạm gọi :d[i]);inc(i);
    nếu a=max thì begin inc(dem);a:=0 end;
    nếu a>max thì begin max:=a;a:=0; i:=1;dem:=0 end;
    until i>n ;
    in ra kq là dem;

    đây là thuật toán dạng thô các bạn hoàn thành và test thử. nếu có nỗi bảo m để m xem lại.

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi chán
    thuật toán của m như này nhưng ko biết có ổn ko.
    tìm max=số lớn nhất của dãy.
    gán i:=1;a:=0;dem:=0;
    repeat
    a:=a+số thứ i (tạm gọi :d[i]);inc(i);
    nếu a=max thì begin inc(dem);a:=0 end;
    nếu a>max thì begin max:=a;a:=0; i:=1;dem:=0 end;
    until i>n ;
    in ra kq là dem;

    đây là thuật toán dạng thô các bạn hoàn thành và test thử. nếu có nỗi bảo m để m xem lại.
    Để mình test thử. Thanks bạn!

 

 
Trang 1 của 2 12 CuốiCuối

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à 11:49 AM.
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.