Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Bài toán chia nhóm trong Pascal
MIỄN PHÍ
Số trang
4
Kích thước
85.4 KB
Định dạng
PDF
Lượt xem
1959

Bài toán chia nhóm trong Pascal

Nội dung xem thử

Mô tả chi tiết

Thuật toán chia kẹo và ứng dụng giải lớp bài toán chia nhóm

Lã Thành Công

Xét một bài toán chianhóm tổng quát như sau:

Chon số a1, a2,...,an (n 'NI*) và m số b1, b2,..., bm (m < n,m ' NI*).

Yêucầu: Hãy chia n số a1, a2,..., an thành m nhómsao chotổng các phần tử của nhóm i bằng

bi (i = 1,m).

Trướckhi đưa ra phương pháp giải bài toán trên ta xét bài toán đơn giản nhưng thú vịđó là

bài "chia kẹo":

Có n gói kẹo mỗi góicóai cái kẹo (i= 1,n). Hãytìm cách chia n gói kẹo thành 2 nhóm sao

cho chênh lệch giữa 2 nhóm là ít nhất.

Bài toán có thể giảitheo thuật toán sau:

Tađi xây dựng các tổng có thể có được từ gói kẹo. Ta thấy nếu tổng nào gồm (n div2) nhất

thì đó là giá trị của nhóm 1. Phần còn lại sẽ thuộc vào nhóm 2. Để xâydựng được ta làm

như sau:

Tadùng 3 mảng làm các công việc sau:

Mảng A dùng để ghi lại các giá trị của tổng

Mảng B dùng để ghi lại các phần tử cuối cùng cho vàođể đạt giá trị ở A.

Mảng C dùng để ghi lại các vị trí của tổng mà khôngcó phần tử ở B. Mảng này dùng để lần

lại các phần tử có để đạt giá trị ở A.

Thựchiện như sau:

A[0]:=0; Max := 0; B [0]:= 0; C [0]:= 0;

Fori:= 1 to n do

For j:= 0 to max do

Begin

D:= True; m:= max;

Tải ngay đi em, còn do dự, trời tối mất!