Megoldás
Tételek alkalmazásával kapott "szokványos" megoldások:
- Megkeressük a minimális értéket, legyen az indexe: min, majd
min+1..n elemekre alkalmazzuk eldöntést: eldöntjük, hogy van-e ott a
minimummal egyező elem: minimum kiválsztás után fűzött eldöntés.
(Az eldöntést már egy szűkített intervallumon érdemes alkalmazni.
- Megkeressük a minimális értéket (indexe legyen min), majd
min+1..n elemeken megszámoljuk, hogy hányszor fordul elő ugyanez az
érték: minimum
kiválasztás után fűzött megszámlálás.
(A megszámlálást már egy szűkített intervallumon érdemes alkalmazni.)
Két ügyes megoldást is készíthetünk a minimum kiválasztás tétele alapján,
de kicsit módosítva az algoritmuson
(nem kell kétszer végig járni az
adatokat, egy ciklussal megkapjuk az eredményt):
- Az első változatban egy logikai változóval jelöljük, hogy volt-e már a
minimális értékkel azonos a sorozatban. Legyen ez a "vantobb" logikai változó.
Kezdetben hamisra állítjuk, majd amikor az eddigi minimum értékkel
azonosat találunk, akkor igazra állítjuk. Vigyázat! Valahányszor egy kisebb
értéket találunk, mind az eddigi minimum, "vantobb" változót
újra hamisra kell állítani!
- A második változatban egy számlálást végzünk a minimum kiválasztással
párhuzamosan. A számláló 1-ről indul, és valahányszor az eddigi minimum
értékkel azonosat találunk, eggyel növeljük. Itt is ügyelni kell, hogy
amennyiben az eddigi minimum értéknél kisebb elemmel találkozunk, akkor a
számlálót ismét 1-re kell állítani.
Nézzük most a kitűzött feladatot: meghatározzuk a minimumot minimum kiválasztással, miközben a kiválogatást is alkalmazzuk: a minimális napok sorszámát kiválogatjuk.