Greedy
technika
Feladatok:
- Egy
egyszemélyes felvonó előtt n
személy áll, akik
szeretnének feljutni sorra az: e1, e2,
…, en emeletekre.
Írjunk programot, (Pszeudokód)
mely meghatározza:
- a felvonó használati sorrendjét,
figyelembe véve, hogy a személyek
várakozási idejét minimalizálni
kell.
- az össz várakozási időt, ha tudjuk, hogy a
felvonó időegységenként egy
emeletmagasságot tesz
meg, illetve a kiszállás és
beszállás, időigényét nem kell
számolni.
- Adott n
tévéműsor,
amelyeknek ismert a kezdési és befejezési
időpontjuk: (
k1, v1 ),
( k2, v2 ), …, ( kn, vn ).
Egy család, akinek egy
tévéje van, úgy
dönt, hogy
a [K,
V] időintervallumban ( ki >= K, vi <= V,
minden i
= 1,..., n )
tévézni fog.
Írjunk programot, mely meghatározza, hogy
- milyen műsorokat válasszon a család, úgy,
hogy a lehető legtöbb műsort
megnézhessék. (Pszeudokód)
- legkevesebb,
hány tévékészülék kell, ahhoz,
hogy minden műsort megnézhessen legalább egy
családtag
- legtöbb,
hány tagú kell legyen a család, ahhoz, hogy minden
műsort megnézhessen legalább egy családtag
- n
város között telefonhálózatot
szeretnénk kiépíteni. Egy nxn
méretű, c
mátrixban tároljuk,
hogy mely városok között
építhető ki direkt telefonvonal,
valamint, hogy ezek a kapcsolatok egyenként mennyibe
kerülnek. Írjunk programot, mely
meghatározza, hogy mely városok között
kell kiépíteni a
direkt telefonvonalakat, úgy, hogy az összes város
össze legyen kapcsolva és a költségek minimálisak
legyenek.
- Adott
egy úthálózat - amely n
várost köt össze
- egy nxn méretű d
mátrixban. A d[i][j]
elem az i
és j városok közti direkt
út hosszát tárolja. Írjunk programot, mely
meghatározza az első várostól
az összes többihez vezető legrövidebb
utakat és ezek hosszát.
1. Felvonó
felvono(
)
rendezés(e, n)
//személyek
rendezése emeletek szerint
sz_ido = 0
ossz_ido = 0
minden
i = 1.. n-1 végezd
sz_ido
= sz_ido + 2*e[i-1]
ossz_ido = osz_ido + sz_ido
vége minden
ki: ossz_ido
vege felvono
Vissza
2. Tévéműsorok
tevemusor( )
rendezes ((k,v), n) // a musorok
rendezese befejezesi
ido fuggvenyben
ki:
k[1], v[1]
T =
v[1]
//
az utolsonak kivalsztott musor befejezesi idopontja
minden
i = 2..n végezd
ha k[i] >= T akkor
ki: k[i], v[i]
T = v[i]
vége ha
vége minden
vege tevemusor
Vissza