Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

Chuyen e Tin hoc

PHNG PHAP
QUY HOACH ONG
Bien soan: Tran Quang Qua
Giao vien trng PTTH chuyen Lng The Vinh, Bien Hoa
Thang 4 nam 2002
1. GII THIEU:
Phng phap quy hoach ong (dynamic programming) la mot k thuat c
ap dung e giai nhieu lp bai toan, ac biet la cac bai toan toi u.
Phng phap quy hoach ong dung k thuat bottom up (i t di len):
Xuat phat t cac trng hp rieng n gian nhat, co the tm ngay ra nghiem.
Bang cach ket hp nghiem cua chung, ta nhan c nghiem cua bai toan c ln
hn. C the tiep tuc, chung ta se nhan c nghiem cua bai toan. Trong qua trnh
i t di len chung ta se s dung mot bang e lu gi li giai cua cac bai toan
con a giai, khong can quan tam en no c s dung au sau nay.
Khi giai mot bai toan con, can en nghiem cua bai toan con nho hn, ta ch
can tm kiem trong bang, khong can phai giai lai. Chnh v the ma giai thuat nhan
c bang phng phap nay rat co hieu qua.
1.1. Uu dicm cua phuong phap quy hoach dong:
Chng trnh chay nhanh.
1.2. Pham vi ap dung cua phuong phap quy hoach dong:
Cac bai toan toi u: nh tm xau con chung dai nhat, bai toan balo, tm
ng i ngan nhat, bai toan Otomat vi so phep bien oi t nhat,
Cac bai toan co cong thc truy hoi.
1.3. Han chc cua phuong phap quy hoach dong:
Phng phap quy hoach ong khong em lai hieu qua trong cac trng hp sau:
S ket hp li giai cua cac bai toan con cha chac cho ta li giai cua bai
toan ln.
So lng cac bai toan con can giai quyet va lu tr ket qua co the rat
ln, khong the chap nhan c.
Khong tm c cong thc truy hoi.
Quy hoach ong 2 Tran Quang Qua

2. CAU TRUC CHUNG CUA CHNG TRNH CHNH:
BEGIN {Chng trnh chnh}
Chuan b: oc d lieu va khi gan mot so gia tr;
Tao bang;
Tra bang va in ket qua;
END.
3. PHNG PHAP QUY HOACH ONG:
1) Tnh nghiem toi u cua bai toan trong trng hp rieng n gian nhat.
2) Tm cac cong thc e quy bieu dien nghiem toi u cua bai toan ln thong
qua nghiem toi u cua cac bai toan con.
3) Tnh nghiem toi u t di len (bottom up) va ghi lai cac nghiem toi u cua
cac bai toan con a tnh e s dung sau nay.
4. V DU:
4.1. Day Fihonaci:
e bai: In ra man hnh 20 so hang au cua day Fibonaci.
Biet: F
1
= 1
F
2
= 1
F
3
= 2 F
i
= F
i-1
+ F
i-2
vi i > 2
F
4
= 3
Giai thuat:
1) Tnh nghiem cua bai toan trong trng hp rieng n gian nhat.
F
1
= F
2
= 1
2) Tm cac cong thc e quy bieu dien nghiem toi u cua bai toan ln thong
qua nghiem toi u cua cac bai toan con.
F
i
= F
i-1
+ F
i-2
vi i > 2
Mi so hang au cua day Fibonaci:
i 1 2 3 4 5 6 7 8 9 10
F[i] 1 1 2 3 5 8 13 21 34 55
4.2. To hop chap k cua n phan tu:
e bai: Tnh cac phan t cua mang C[n, k] = C
k
n
= so to hp chap k
cua n phan t, vi 0 k n 20.
Biet C
o
n
= C
n
n
= 1
C
k
n
= C
k-1
n-1
+ C
k
n-1

Quy hoach ong 3 Tran Quang Qua

Giai thuat:
1) Tnh nghiem cua bai toan trong trng hp rieng n gian nhat.
For i := 1 To n Do
Begin
C[0, i] := 1;
C[i, i] := 1;
End;
2) Tm cac cong thc e quy bieu dien nghiem toi u cua bai toan ln thong
qua nghiem toi u cua cac bai toan con.
For i := 2 To n Do
For j := 1 To i-1 Do
C[i, j] := C[i-1,j-1] + C[i-1,j];
n k 0 1 2 3 4 5
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1
3) Co the cai tien: dung 2 mang mot chieu thay cho 1 mang hai chieu.
4.3. Tim day con khong giam dai nhat:
e bai: Cho mot day n so nguyen. Hay loai bo khoi day mot so phan t e
c mot day con khong giam dai nhat. In ra day con o.
V du: Input:
10
2 6 -7 5 8 1 -3 5 15 9
Ket qua tm c day con khong giam dai nhat co 4 phan t:
-7 -3 5 9
Giai thuat:
1) To chc d lieu:
Goi A la day ban au.
Goi B[i] la so phan t cua day con dai nhat trong day co i phan t au tien
A[1] .. A[i] va A[i] c chon lam phan t cuoi. (i [1, n])
C la day con khong giam dai nhat tm c.
Truoc[i] la ch so cua phan t trc phan t i (cac phan t gi lai C).
2) Giai thuat tao bang: (Tnh mang B va mang Trc)
Trng hp n gian nhat: day ch co 1 phan t, th B[1] := 1;
For i t 2 en n Do
Xet vi moi j < i va A[j] <= A[i], tm B[j] ln nhat (goi la BMax).
B[i] := BMax + 1;
Trc[i] := j; {j la ch so ng vi BMax tm c}.
Quy hoach ong 4 Tran Quang Qua

Trong v du tren:
i 1 2 3 4 5 6 7 8 9 10
Day A[i]
2 6 -7 5 8 1 -3 5 15 9
B[i] 1 2 1 2 3 2 2 3 4 4
Truoc[i] 0 1 1 3 4 3 3 7 8 8
Day con khong giam dai nhat co 4 phan t: -7 -3 5 9
Procedure TaoBang;
Var i, j, BMax, chiSo :byte;
Begin
B[1] := 1;
For i := 2 to n do
begin
BMax := 0;
For j := i-1 DownTo 1 Do
If (A[j] <= A[i]) and (B[j] > BMax)then
begin
BMax := B[j];
chiSo := j;
end;
B[i] := BMax + 1;
Truoc[i] := chiSo;
end;
End;
Co the cai tien khong can dung bien BMax va chiSo
3) Tra bang: e tm cac phan t cua day C:
a) Tm phan t ln nhat cua mang B. (ng vi ch so ChiSoMax).
Phan t ln nhat cua mang B chnh la so phan t cua day C.
b) A[ChiSoMax] la phan t cuoi cua day C. Nh vao mang Trc, ta tm cac
phan t con lai trong day C: tm ngc t cuoi day len au day.
Procedure TraBang;
Var chiSo, ChiSoMax, i : byte;
Begin
ChiSoMax := n;
for i:= n-1 downto 1 do
if B[i] > B[ChiSoMax] then
ChiSoMax := i;
chiSo := ChiSoMax;
for i := B[ChiSoMax] downto 1 do
begin
C[i]:= A[chiSo];
chiSo := Truoc[chiSo];
end;
End;
Quy hoach ong 5 Tran Quang Qua

4.4. Bai toan halo 1:
e bai: Cho n mon hang (n 50). Mon th i co khoi lng la A[i] (so
nguyen). Can chon nhng mon hang nao e bo vao mot ba lo sao tong khoi lng
cua cac mon hang a chon la ln nhat nhng khong vt qua khoi lng W cho
trc. (W 100). Moi mon ch chon 1 hoac khong chon.
Input:
n W
A[1] A[2] A[n]
V du:
4 10
5 2 4 3
OutPut:
Tong khoi lng cua cac mon hang bo vao ba lo.
Khoi lng cua cac mon hang a chon.
Trong v du tren:
Tong khoi lng cua cac mon hang bo vao ba lo la 10
Khoi lng cac mon hang c chon: 5 2 3
Hng giai:
1) To chc d lieu:
Fx[k, v] la tong khoi lng cua cac mon hang bo vao ba lo khi co k mon
hang au tien e chon va khoi lng toi a cua ba lo la v.
Vi k [1, n], v [1, W].
Noi cach khac: Khi co k mon e chon, Fx[k, v] la khoi lng toi u khi khoi
lng toi a cua ba lo la v.
Khoi lng toi u luon nho hn hoac bang khoi lng toi a: Fx[k, v] v
V du: Fx[4, 10] = 8 Ngha la trong trng hp toi u, tong khoi lng cua
cac mon hang c chon la 8, khi co 4 mon au tien e chon (t mon th 1 en
mon th 4) va khoi lng toi a cua ba lo la 10. Khong nhat thiet ca 4 mon eu
c chon.
2) Giai thuat tao bang:
* Trng hp n gian ch co 1 mon e chon: Ta tnh Fx[1, v] vi moi v:
Neu co the chon (ngha lakhoi lng toi a cua ba lo >= khoi lng cua
cac mon hang th 1), th chon: Fx[1, v] := A[1];
Ngc lai ( v < A[1] ), khong the chon, ngha la Fx[1, v] := 0;
Quy hoach ong 6 Tran Quang Qua

* Gia s ta a tnh c Fx[k1 , v ] en dong k1, vi moi v [1, W].
Khi co them mon th k e chon, ta can tnh Fx[k , v] dong k, vi moi v[1,W]
Neu co the chon mon hang th k (v >= A[k]), th co 2 trng hp:
Trng hp 1: Neu chon them mon th k bo vao ba lo, th
Fx[k, v] := Fx[k1, u ] + A[k];
Vi u la khoi lng con lai sau khi chon mon th k. u = v A[k]
Trng hp 2: Ngc lai, khong chon mon th k, th
Fx[k, v] := Fx[k1, v ];
Trong 2 trng hp tren ta chon trng hp nao co Fx[k, v] ln hn.
Ngc lai (v < A[k]), th khong the chon, ngha la Fx[k, v] := Fx[k1, v];
Tom lai: cong thc e quy la:
If v >= A[k] Then
Fx[k,v] := Max(Fx[k-1, v - A[k]] + A[k] , Fx[k-1,v])
Else
Fx[k,v] := Fx[k-1, v];
Di ay la bang Fx[k,v] tnh c trong v du tren:
k v 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 5 5 5 5 5 5
2 0 2 2 2 5 5 7 7 7 7
3 0 2 2 4 5 6 7 7 9 9
4 0 2 3 4 5 6 7 8 9 10
Procedure TaoBang;
Var k ,v : integer;
Begin
For v:=1 to W do
If v >= A[1] then Fx[1, v] := A[1]
Else Fx[1, v] := 0;
For k:= 2 to n do
for v:=1 to W do
If v >= A[k] then
Fx[k,v]:= Max(Fx[k-1,v-A[k]]+ A[k], Fx[k-1,v])
Else
Fx[k,v]:=Fx[k-1,v];
End;
3) Giai thuat tra bang e tm cac mon hang c chon:
Chu y: Neu Fx[k, v] = Fx[k1, v] th mon th k khong c chon.
Fx[n, W] la tong khoi lng toi u cua cac mon hang bo vao ba lo.
Bc 1: Bat au t k = n, v = W.
Bc 2: Tm trong cot v, ngc t di len, ta tm dong k sao cho
Fx[k,v] > Fx[k1, v].
anh dau mon th k c chon: Chon[k] := true;
Bc 3: v := Fx[k, v] A[k].
Neu v > 0 th thc hien bc 2, ngc lai thc hien bc 4
Bc 4: Da vao mang Chon e in ra cac mon hang c chon.
Quy hoach ong 7 Tran Quang Qua

Procedure TraBang;
var k, v: Integer;
Begin
k := n;
v := w;
FillChar(chon,SizeOf(chon),false);
Repeat
While Fx[k,v] = Fx[k-1,v] do Dec(k);
chon[k]:= True;
v := Fx[k,v] - A[k];
Until v = 0;
For k := 1 to n do
If chon[k] then Write(A[k]:5);
Writeln;
End;
4.S. Bai toan chia kco:
e bai: Cho n goi keo (n 50). Goi th i co A[i] vien keo. Can chia cac
goi keo nay cho 2 em be sao cho tong so vien keo moi em nhan c chenh
lech t nhat. Moi em nhan nguyen goi. Khong m goi keo ra e chia lai.
Hay liet ke so keo trong cac goi keo moi em nhan c.
Input:
n
A[1] A[2] A[n]
Output: So keo trong cac goi keo moi em nhan c, va tong so keo moi
em nhan c.
Hng giai:
Goi S la tong so vien keo S := A[1] + A[2] + + A[n];
S2 la na tong so keo: S2 := S div 2;
Cho em be th nhat chon trc nhng goi keo sao cho tong so vien keo
ma em nhan c la ln nhat nhng khong vt qua so keo S2.
Goi keo nao em be th nhat khong chon th em be th hai chon.
Bai toan c a ve bai ba lo 1.
4.6. Bai toan halo 2:
e bai: Cho n mon hang (n 50). Mon th i co khoi lng la A[i] va gia
tr C[i] (so nguyen). Can chon nhng mon hang nao e bo vao mot ba lo sao
tong gia tr cua cac mon hang a chon la ln nhat nhng tong khoi lng cua
chung khong vt qua khoi lng W cho trc (W 100).
Moi mon ch chon 1 hoac khong chon.
Input:
n W
A[1] C[1]
A[2] C[2]

A[n] C[n]
Quy hoach ong 8 Tran Quang Qua

V du:
5 13
3 4
4 5
5 6
2 3
1 1
OutPut:
Tong gia tr cua cac mon hang bo vao ba lo.
Khoi lng va gia tr cua cac mon hang a chon.
Trong v du tren:
Tong gia tr cua cac mon hang bo vao ba : 16
Cac mon c chon:
1(3, 4) 2(4, 5) 3(5, 6) 5(1, 1)
Hng giai:
Tng t bai ba lo 1, nhng Fx[k, v] la gia tr ln nhat cua ba lo khi co k
mon hang au tien e chon va khoi lng toi a cua ba lo la v.
Cong thc e quy la:
If v >= A[k] Then
Fx[k,v]:= Max(Fx[k-1, v-A[k]] + C[k], Fx[k-1,v])
Else
Fx[k,v]:=Fx[k1,v];
Chu y: ch khac bai balo 1 cho dung C[k] thay cho A[k]
Di ay la bang Fx[k,v] tnh c trong v du tren:
k v 1 2 3 4 5 6 7 8 9 10 11 12 13
1 0 0 4 4 4 4 4 4 4 4 4 4 4
2 0 0 4 5 5 5 9 9 9 9 9 9 9
3 0 0 4 5 6 6 9 10 11 11 11 15 15
4 0 3 4 5 7 8 9 10 12 13 14 15 15
5 1 3 4 5 7 8 9 10 12 13 14 15 16

4.7. Bai toan halo 3:
e bai: Cho n loai hang (n 50). Moi mon hang thuoc loai th i co khoi
lng la A[i] va gia tr C[i] (so nguyen). So lng cac mon hang cua moi loai
khong han che. Can chon nhng mon hang cua nhng loai hang nao e bo vao
mot ba lo sao tong gia tr cua cac mon hang a chon la ln nhat nhng tong khoi
lng cua chung khong vt qua khoi lng W cho trc (W 100).
Moi loai hang co the hoac khong chon mon nao, hoac chon 1 mon, hoac
chon nhieu mon.
Quy hoach ong 9 Tran Quang Qua

Input:
n W
A[1] C[1]
A[2] C[2]

A[n] C[n]
V du:
5 13
3 4
4 5
5 6
2 3
1 1
OutPut:
Tong gia tr cua cac mon hang bo vao ba lo.
So lng cua cac loai hang a chon.
Trong v du tren:
Tong gia tr cua cac mon hang bo vao ba lo: 19
Cac mon c chon:
Chon 1 mon hang loai 1, moi mon co khoi lng la 3 va gia tr la 4
Chon 5 mon hang loai 4, moi mon co khoi lng la 2 va gia tr la 3
Hng giai:
1) To chc d lieu:
Fx[k, v] la tong gia tr cua cac mon hang bo vao ba lo khi co k loai hang
au tien e chon va khoi lng toi a cua ba lo la v.
Vi k [1, n], v [1, W].
X[k, v] la so lng cac mon hang loai k c chon khi khoi lng toi a cua
ba lo la v.
2) Giai thuat tao bang:
* Trng hp n gian ch co 1 mon e chon: Ta tnh Fx[1, v] vi moi v:
X[1, v] = v div A[1]
Fx[1, v] = X[1, v] * C[1]
* Gia s ta a tnh c Fx[k1 , v ] en dong k1, vi moi v [1, W].
Khi co them loai th k e chon, ta can tnh Fx[k , v] dong k, vi moi v[1,W]
Neu ta chon xk mon hang loai k, th khoi lng con lai cua ba lo danh cho
cac loai hang t loai 1 en loai k 1 la: u = v xk * A[k]
Khi o gia tr cua ba lo la: Fx[k, v]= Fx[k1,u] + xk * C[k]
Vi xk thay oi t 0 en yk, ta chon gia tr ln nhat va lu vao Fx[k, v].
Trong o yk = v div A[k] la so lng ln nhat cac mon hang loai k co the c
chon bo vao ba lo, khi khoi lng toi a cua ba lo la v.
Quy hoach ong 10 Tran Quang Qua

Tom lai: cong thc e quy la:
Fx[k,v] = Max(Fx[k-1, v xk * A[k]] + xk * C[k])
Max xet vi xk thay oi t 0 en v div A[k], va v xk * A[k] > 0
Di ay la bang Fx[k,v] va X[k, v] tnh c trong v du tren. Bang mau
xam la X[k, v]:
k v 1 2 3 4 5 6 7 8 9 10 11 12 13
1 0 0 0 0 4 1 4 1 4 1 8 2 8 2 8 2 12 3 12 3 12 3 16 4 16 4
2 0 0 0 0 4 0 4 0 5 1 8 0 9 1 9 1 12 0 13 1 14 2 16 0 17 1
3 0 0 0 0 4 0 4 0 5 0 8 0 9 0 10 1 12 0 13 0 14 0 16 0 17 0
4 0 0 0 0 4 0 4 0 7 1 8 0 10 2 11 1 13 3 14 2 16 4 17 3 19 5
5 0 0 1 1 4 0 5 1 7 0 8 0 10 0 11 0 13 0 14 0 16 0 17 0 19 0

Procedure TaoBang;
Var xk, yk, k: Byte;
FMax, XMax, v : Word;
Begin
For v:= 1 To W Do
begin
X[1, v] := v div A[1];
F[1, v] := X[1, v] * C[1];
end;
For k:= 2 To n Do
For v:= 1 To W Do
begin
FMax := F[k-1, v] ;
XMax := 0;
yk := v div A[k];
For xk:= 1 To yk Do
If (v - xk * A[k] > 0) and
F[k-1, v - xk * A[k]] + xk * C[k] > FMax) Then
begin
FMax := F[k-1, v - xk * A[k]] + xk * C[k];
XMax:= xk;
end;
F[k, v] := FMax;
X[k, v] := XMax;
end;
End;
3) Giai thuat tra bang:
Fx[n, W] la gia tr ln nhat cua ba lo.
Bat au t X[n, W] la so mon hang loai k c chon.
Tnh v = W X[n, W]* A[n].
Tm en o [n 1, v ] ta tm c X[n 1, v]. C tiep tuc ta tm c X[1, v].
Chu y: khi tra bang, ta khong dung mang Fx[k, v], nen ta co the cai tien:
dung 2 mang mot chieu thay cho mang hai chieu Fx.
Quy hoach ong 11 Tran Quang Qua

4.8. Bai toan doi ticn:
e bai: Cho n loai t giay bac. T giay bac th i co menh gia A[i]. So t
moi loai khong gii han. Can chi tra cho khach hang so tien M ong. Hay cho
biet moi loai tien can bao nhieu t sao cho tong so t la t nhat. Neu khong oi
c, th thong bao KHONG DOI DUOC. N < 50; A[i] < 256; M < 10000
Input: n M
A[1] A[2] A[n]
V du: 3 18
3 10 12
Output: Tong so t phai tra.
So t moi loai.
Cach giai th nhat: Tng t bai ba lo 3
Goi Fx[i, j ] la so t t nhat c dung e tra so tien j ong khi co i loai tien
t loai 1 en loai i. Vi i = 1 .. n; j = 1 .. M.
X[i, j] la so t giay bac loai th i c dung chi tra so tien j ong.
* Trng hp n gian ch co 1 loai tien e chon: Ta tnh Fx[1, j] vi moi j
j div A[1] neu j mod A[1] = 0
neu j mod A[1] 0 (khong oi c)
* Gia s ta a tnh c Fx[i1 , j ] en dong i1, vi moi j [1, M]. Khi
co them loai tien th i e chon, ta can tnh Fx[i , j] dong i, vi moi j[1, M]
Neu ta chon k t loai i, th so tien con lai danh cho cac loai tien khac t loai
1 en loai i 1 la: u = j k * A[k]
Khi o tong so t la: Fx[i, j]= Fx[i1,u] + k
Vi k thay oi t 0 en kMax, ta chon gia tr nho nhat va lu vao Fx[i, j].
Trong o kMax = j div A[k] la so t nhieu nhat cua loai tien i e oi so tien j.
Tom lai: cong thc e quy la:
Fx[i,j] = Min(Fx[i-1, j k * A[i]] + k)
Min xet vi k thay oi t 0 en j div A[i], va j k * A[i] > 0
Cach giai th hai:
Goi Fx[i] la so t t nhat c dung e oi so tien i. Vi i = 1 .. M.
Vi quy c Fx[i] = (hoac 0) khi khong oi c.
X[i] la loai tien cuoi cung c dung oi so tien i. (ch lu 1 loai tien)
Giai thuat tao bang:
Xep menh gia A[i] tang dan.
Khi gan Fx[i] = VoCc, X[i] = 0 vi moi j = 1 .. M
Gan Fx[0] = 0
Vi so tien i chay t 1 en M, ta tnh Fx[i] va X[i], bang cach:
Fx[1, j] = {
Quy hoach ong 12 Tran Quang Qua

Neu chon loai tien j th so tien con lai la i A[j]
Fx[i] = Min( Fx[i A[j]] + 1) neu i >= A[j]
Min xet vi loai tien j chay t 1 en n.
X[i] = j ng vi gia tr min cua Fx[i]
Di ay la mang Fx[i] va X[i] tnh c trong v du tren
(dung 3 loai tien 3 ong, 10 ong, 12 ong e oi so tien 18 ong)
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Fx[i] 1 2 3 1 1 2 2 3 3
X[i] 0 0 0 1 0 0 1 0 0 1 2 0 3 2 0 3 2 0 3
Procedure TaoBang;
Var i: Word;
j: Byte;
Begin
For i:= 1 to M Do Fx[i] := VoCuc; {VoCc = MaxInt 1 }
Fx[0] := 0;
FillChar(X, SizeOf(X), 0);
For i := 1 to M Do { i la so tien }
For j := n DownTo 1 Do {j la loai tien }
If i >= A[j] Then
If (Fx[i] > Fx[i - A[j]] + 1) Then
Begin
Fx[i]:= Fx[i - A[j]] + 1;
X[i] := j;
End;
End;
Quy hoach ong 13 Tran Quang Qua

4.9. Phan cong kl vu
(e thi tuyen sinh sau ai hoc khoa 1997 ai hoc Tong hp Tp HCM)
Mot c s phan mem co n phong may vi tnh. C s nay phai tuyen chon m
k s e bao tr may. Sau khi tham gia y kien cua cac chuyen gia va kinh nghiem
cua cac n v khac, ngi ta hieu rang neu phan cong i k s chuyen bao tr tai
phong may j th so may hong hang nam phai thanh l la a[i,j]. Do han che ve thi
gian va ieu kien i lai ch co the phan cong moi k s bao tr tai mot phong may.
Bang v du di ay vi m = 5 (k s) va n = 3 (phong may).
So k s phong may 1 phong may 2 phong may 3
0 14 25 20
1 10 19 14
2 7 16 11
3 4 14 8
4 1 12 6
5 0 11 5
Yeu cau: Tm ra phng an phan cong moi phong may phan bao nhieu k s
sao cho tong so may phai thanh l hang nam la t nhat.
D lieu: vao t file van ban KiSu.inp co 2 dong:
dong au gom 2 so nguyen dng m, n. (m, n < 50)
m+1 dong tiep theo bang a[i, j].
Ket qua: a ra file van ban KiSu.out gom 2 dong:
Dong au cha tong so may (t nhat) phai thanh l hang nam.
Dong th hai cha n so nguyen dng la so k s c phan cong bao tr
moi phong may.
Trong v du tren, phan cong 3 k s cho phong may 1, 1 k s cho phong
may 2, va 1 k s cho phong may 3. Khi o, hang nam so may t nhat phai thanh l
la 37 may.
V du:
KiSu.inp (oi vi v du tren) KiSu.out
5 3
14 25 20
10 19 14
7 16 11
4 14 8
1 12 6
0 11 5
37
3 1 1
Hng dan giai:
Goi F[i, j] la so may h t nhat hang nam khi co i k s c phan cong bao
tr j phong may au tien.
Quy hoach ong 14 Tran Quang Qua

4.10. Tam phan da giac:
Cho mot a giac loi n nh. Hay phan a giac nay thanh n 2 tam giac
bang n 3 ng cheo, sao cho tong cua o dai cua cac ng cheo nay la nho
nhat. Cac ng cheo nay khong cat nhau (ch co the giao nhau nh cua a
giac).
D lieu: vao t file van ban TAMPHAN.INP co n + 1 dong:
Dong au cha mot so nguyen n la so nh cua a giac (3 < n < 50).
Moi dong trong n dong ke tiep cha hai so thc la hoanh o va tung
o cua moi nh cua a giac.
Ket qua: a ra file van ban TAMPHAN.OUT, gom dong au cha mot so
thc (co 4 ch so thap phan) la tong nho nhat cua o dai cua cac ng cheo.
Moi dong trong n 3 dong tiep theo cha 2 so nguyen la ch so cua hai nh cua
moi ng cheo c chon.
V du:
TAMPHAN.INP TAMPHAN.OUT
6
2 1
2 4
6 6
10 6
10 3
7 0
17.4859
2 6
3 6
3 5
Hng dan: Goi Fx[i, j] la tong o dai ngan nhat cua cac ng cheo khi
tam phan a giac co i nh ke t nh th j.
4.11. Tram huu dicn
Tren mot con ng thang, dai, so nha cua nhng nha doc theo mot ben
ng la so o o dai tnh t au con ng (so nguyen). Ngi ta chon ra k nha
lam tram bu ien.
Hay xac nh so nha cua k nha o sao cho cac nha con lai cach mot tram
bu ien nao o la gan nhat hay tong khoang cach cua cac nha con lai en mot
tram bu ien gan nhat nao o la nho nhat.
D lieu: vao t file van ban BuuDien.inp gom 2 dong:
Dong au: cha hai so nguyen n va k ( n < 300; k < 30), vi n la tong
so nha tren con ng o, k la so tram bu ien.
Dong th hai la cac so nha theo th t tang dan.
Ket qua: a ra file van ban BuuDien.out gom 2 dong:
Dong au: la k nha dung lam tram bu ien.
Dong th hai la tong khoang cach cua cac nha con lai en mot tram
bu ien gan nhat nao o.
V du:
BuuDien.inp BuuDien.out
10 5
1 2 3 6 7 9 11 22 44 50

2 7 22 44 50
9
Quy hoach ong 15 Tran Quang Qua

4.12. Xau con chung dai nhat:
Cho hai xau k t s1 va s2. Tm xau k t s co nhieu k t nhat, vi s va la
xau con cua xau s1, va la xau con cua xau s2. (Xau con la xau k t co c khi
bo bt mot so k t trong xau cha).
D lieu: vao t tap tin van ban XauChung.inp gom hai dong, moi dong la
mot xau k t.
Ket qua: a ra tap tin van ban XauChung.out gom 2 dong:
Dong au la o dai cua xau con chung dai nhat.
Dong th hai la xau con chung s.
V du:
XauChung.inp XauChung.out
luong the vinh bien hoa
ngo quyen dong nai

9
ng en n a

You might also like