You are on page 1of 7

BI TP C T HNH THC TUN 10

S dng cc kiu d liu sau cho cc cu t 91 n 95:


SN-VN-NG ::
tn-Sn: char*
sc-cha: 1
T-S ::
s-bn-thng-i-nh :
s-bn-thng-i-khch :
I-BNG ::
tn-i: char*
sn-nh : SN-VN-NG

TRN-U ::
i-nh : I-BNG
i-khch : I-BNG
vng-thi-u: 1
t-s : T-S
Ghi ch: Mi i bng thi u ng 2 trn
vi cc i cn li (mt trn lt i trn sn
khch, mt trn lt v trn sn nh ca
chnh mnh).

91. c t hm tnh s trn thng ca mt i bng trong gii v ch


i-nh-thng (trn-u: TRN-U) kq: B
Pre

true

Post
kq = trn-u . t-s . s-bn-thng-i-nh > trn-u . t-s . s-bn-thngi-khch
i-khch-thng (trn-u: TRN-U) kq: B
Pre

true

Post
kq = trn-u . t-s . s-bn-thng-i-nh < trn-u . t-s . s-bn-thngi-khch
L-i-nh (i: I-BNG, trn-u: TRN-U) kq: B
Pre

true

Post

kq = ( i = trn-u . i-nh )

L-i-khch (i: I-BNG, trn-u: TRN-U) kq: B

Pre

true

Post

kq = ( i = trn-u . i-khch )

Thng (i: I-BNG, trn-u: TRN-U) kq: B


Pre

true

Post

kq = ( (L-i-nh (i, trn-u) i-nh-thng (trn-u))

(L-i-khch (i, trn-u) i-khch-thng (trn-u)) )


S-trn-thng (i: I-BNG, lch-thi-u: TRN-U*) kq:
Pre

true

Post

(kq = 1 + S-trn-thng (i, tl lch-thi-u) Thng (i, hd lch-thi-u))


(kq = S-trn-thng (i, tl lch-thi-u) Thng (i, hd lch-thi-u))
(kq = 0 lch-thi-u = [])

92. c t hm tnh s trn ha ca mt i bong trong gii v ch


Ha (trn-u: TRN-U) kq: B
Pre

true

Post
kq = ( trn-u . t-s . s-bn-thng-i-nh = trn-u . t-s . s-bn-thngi-khch )
S-trn-ha (i: I-BNG, lch-thi-u: TRN-U*) kq:
Pre

true

Post
(kq = 1 + S-trn-ha (i, tl lch-thi-u) Ha ( hd lch-thi-u) (L-inh (i, hd lch-thi-u) L-i-khch (i, hd lch-thi-u)))
(kq = S-trn-ha (i, tl lch-thi-u) (Ha ( hd lch-thi-u) (L-inh (i, hd lch-thi-u) L-i-khch (i, hd lch-thi-u)))
(kq = 0 ( lch-thi-u = [])

93. c t hm tnh im ca mt i bng vi quy nh: mi trn


thng c 3 im, mi trn ha c 1 im, mi trn thua khng c
im.

S-im (i: I-BNG, lch-thi-u: TRN-U*) kq:


Pre

true

Post

kq = S-trn-ha (i, lch-thi-u) + 3* S-trn-thng (i, lch-thi-u)

94. c t hm tnh hiu s bn thng bi ca mt i bong.


S-bn-thng-trong-trn (i: I-BNG, trn-u: TRN-U) kq:
Pre

true

Post

(L-i-nh (i, trn-u) kq = trn-u . t-s . s-bn-thng-i-nh )


(L-i-khch (i, trn-u) kq = trn-u . t-s . s-bn-thng-i-khch

)
( (L-i-nh (i, trn-u) L-i-khch (i, trn-u)) kq = 0)
S-bn-thua-trong-trn (i: I-BNG, trn-u: TRN-U) kq:
Pre

true

Post

(L-i-nh (i, trn-u) kq = trn-u . t-s . s-bn-thng-i- khch )


(L-i-khch (i, trn-u) kq = trn-u . t-s . s-bn-thng-i- nh )

( (L-i-nh (i, trn-u) L-i-khch (i, trn-u)) kq = 0)


S-bn-thng (i: I-BNG, lch-thi-u: TRN-U*) kq:
Pre

true

Post
(kq = S-bn-thng-trong-trn (i, hd lch-thi-u) + S-bn-thng (i, tl
lch-thi-u))
(kq = 0 len lch-thi-u = 0)
S-bn-thua (i: I-BNG, lch-thi-u: TRN-U*) kq:
Pre

true

Post
kq = S-bn-thua-trong-trn (i, hd lch-thi-u) + S-bn-thua (i, tl lchthi-u)

(kq = 0 len lch-thi-u = 0)


Hiu-s-bn-thng-bi (i: I-BNG, lch-thi-u: TRN-U*) kq: Z
Pre

true

Post

kq = S-bn-thng (i, lch-thi-u) S-bn-thua (i, lch-thi-u)

95. c t hm sp hng cc i bng theo im gim dn. Nu nhiu


i cng im th xt tip cc tiu ch sau: hiu s bn thng bi (gim
dn), s bn thng (gim dn), kt qu trn i khng trc tip.
Thua (i: I-BNG, trn-u: TRN-U) kq: B
Pre

true

Post

kq = ( (L-i-nh (i, trn-u) i-khch-thng (trn-u) )


(L-i-khch (i, trn-u) i-nh-thng (trn-u)) )

Hng-cao-hn (i-1: I-BNG, i-2: I-BNG, lch-thi-u: TRN-U*) kq: B


Pre

true

Post

kq = (S-im (i-1, lch-thi-u) > S-im (i-2, lch-thi-u))

(S-im (i-1, lch-thi-u) = S-im (i-2, lch-thi-u))

Hiu-s-

bn-thng-bi (i-1, lch-thi-u) > Hiu-s-bn-thng-bi (i-2, lch-thi-u)

Hiu-s-bn-thng-bi (i-1, lch-thi-u) = Hiu-s-bn-thng-bi (i-2, lch-thi-

u)

S-bn-thng (i-1, lch-thi-u) > S-bn-thng (i-2, lch-thi-u)

S-bn-thng (i-1, lch-thi-u) = S-bn-thng (i-2, lch-thi-u)

( i inds

lch-thi-u Thng (i-1, lch-thi-u(i)) Thua (i-2, lch-thi-u(i))

)) )

???

)))

Xp-hng (ds-i: I-BNG*, lch-thi-u: TRN-U*) kq-xphng: I-BNG*


Pre

elems ds-i = elems kq-xphng len ds-i = len kq-xphng

Post
i [1,.., (len ds-i ) 1] Hng-cao-hn (ds-i(i), ds-i(i+1), kqxphng)
S dng kiu d liu di y cho cu 96 v 97:
Xt mt h iu hnh n gin. Cho trc c t cc kiu d liu biu din thng tin ca 1 tin
trnh v ReadyList nh sau:
PROCESS_ID =
PROCESS_INFO ::
pID : PROCESS_ID
CPUBurstTime:
READY_LIST = PROCESS_INFO*
Cho trc bin ton cc ready-List : READY_LIST
96. Hy c t hm FIFOScheduler cho php chn ra tin trnh theo chin lc FIFO vi thng
tin cc tin trnh ang ch s dng CPU trong ready-List.
FIFOScheduler () pID: PROCESS_ID
97. Hy c t hm SJFScheduler cho php chn ra tin trnh theo chin lc SJF (Shortest Job
First) vi thng tin cc tin trnh ang ch s dng CPU trong ready-List. Nu c nhiu tin trnh
c cng thi gian thc thi (CPUBurstTime) ngn nht bng nhau th u tin chn tin trnh c
thi gian ngn nht xut hin trc trong ready-List.
SJFScheduler () pID: PROCESS_ID

98. T nh ngha kiu d liu TOWER_STATE biu din 1 trng thi ca bi ton Thp H
Ni vi 3 ct (A, B, C) v n a (nh s t 1 n n, a 1 < a 2 < < a n). c t iu kin
rng buc i vi kiu d liu ny (ghi ch: vi mi ct, a di phi ln hn a trn)

COLUMN_STATE = N*
inv-COLUMN_STATE: COLUMN_STATE
B
inv-COLUMN_STATE (cs)
i, j inds cs i > j cs(i) > cs(j)

TOWER_STATE ::
Column-A : COLUMN_STATE
Column-B : COLUMN_STATE
Column-C : COLUMN_STATE
inv- TOWER_STATE : TOWER_STATE

B
inv- TOWER_STATE (ts)
let ac = ts . Column-A ts . Column-B ts .
Column-C in
len ac = card elems ac

99. c t thao tc MoveAB thc hin vic di chuyn 1 a (trn cng) t ct A sang ct B. Lu
ch x l nu ct A c t nht 1 a, v a trn cng ca ct A phi nh hn a trn cng ca ct
B, hoc ct B cn trng.
MoveAB(S0: TOWER_STATE) S1: TOWER_STATE
Pre

true

Post
(S1 . Column-A = tl S0 . Column-A ) (S1 . Column-B = hd S0 . Column-A S0 .
Column-B )

100. Gi s c sn cc c t ca cc thao tc di chuyn 1 a (trn cng) t ct ny sang ct


khc.
MoveAB(S0: TOWER_STATE) S1: TOWER_STATE
MoveBA(S0: TOWER_STATE) S1: TOWER_STATE
MoveAC(S0: TOWER_STATE) S1: TOWER_STATE
MoveCA(S0: TOWER_STATE) S1: TOWER_STATE
MoveBC(S0: TOWER_STATE) S1: TOWER_STATE
MoveCB(S0: TOWER_STATE) S1: TOWER_STATE
Hy c t hm bin i t trng thi S0 sang trng thi Sn cho trc.

You might also like