Strani spletnega mesta
Leto 2010
Leto 2011
Leto 2012
Leto 2013
Leto 2014
Leto 2015
Leto 2016
Leto 2017
Leto 2018
Leto 2019
Leto 2020
Leto 2021
Sodelujoči
Navodila
Testna naloga
1. naloga
2. naloga
3. naloga
4. naloga
5. naloga
Naloge za 2. skupino
Nasveti
Leto 2023
NAPOJ
ACM Bober
Programiranje v višji prestavi
Srednja šola
Razno
2. naloga
Luči
Dano je zaporedje n luči; znano je njihovo začetno stanje (katere so prižgane in katere ugasnjene) ter želeno končno stanje. Osnovna operacija, ki jo lahko nad lučmi izvajamo, je, da si izberemo števili i in j (z območja 1 ≤ i ≤ j ≤ n) in spremenimo stanje vseh luči od vključno i-te do vključno j-te (torej ugasnemo tiste med njimi, ki so bile prej prižgane, in prižgemo tiste, ki so bile prej ugasnjene).
Napiši podprogram (oz. funkcijo) Luci(n, zacetno, koncno), ki izpiše zaporedje čim manj takšnih operacij, s katerimi lahko luči iz začetnega stanja spravimo v želeno končno stanje. Za vsako operacijo naj izpiše števili i in j, torej številko prve in zadnje spremenjene luči (luči so oštevilčene od 1 do n). Če obstaja več enako dobrih rešitev z najmanjšim možnim številom operacij, je vseeno, katero izpiše. Kot parametra zacetno in koncno naj tvoj podprogram sprejme niza n znakov, ki opisujeta začetno in končno stanje luči (znak ’P’ predstavlja prižgano luč, znak ’U’ pa ugasnjeno).
Dobro tudi utemelji, zakaj tvoja rešitev res najde najmanjše možno število operacij.
Primer: če imamo n = 7 luči in je začetno stanje UUPPPUP, končno pa UPPUPPU, potrebujemo vsaj tri operacije. Eno od možnih zaporedij treh operacij je: i = 2, j = 5 (dobimo UPUUUUP); i = 4, j = 7 (dobimo UPUPPPU); i = 3, j = 4 (dobimo UPPUPPU).