280 likes | 428 Views
Vysvetlenia riešení problémov. Heslá Peter Fillo. Heslá Peter Fillo. Pohľad na mesto Peter Lacko. Alergické červíky Matúš Horváth. Zvláštna abeceda Peter Trebatický. Simulácia robotov Martin Kvasnička. … … 265413 265431 312456 312465 312546 … …. Heslá: vysvetlenie na príklade.
E N D
Heslá • Peter Fillo • Heslá • Peter Fillo • Pohľad na mesto • Peter Lacko • Alergické červíky • Matúš Horváth • Zvláštna abeceda • Peter Trebatický • Simulácia robotov • Martin Kvasnička
… … 265413 265431 312456 312465 312546 … … Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 324156 • n = 6 (počet cifier) • k = 3 (prvá cifra je: 3) => prvá permutácia začínajúca číslom 3 bude 312456
123456 123465 : : : : : : 165432 213456 213465 : : : : : : 265431 312456 312465 … … Permutácie začínajúce jednotkou Počet permutácií pred 312456: 2*5!=240 Permutácie začínajúce dvojkou k-1*(n-1)! n=6, k=3 Heslá: vysvetlenie na príklade • poradové číslo permutácie 312456: (3 - 1)*5! Počet permutácií začínajúcich dvojkou bude: 5!
chýba číslo 3 => => nie permutácia pre n = 5 24156 23145 Heslá: vysvetlenie na príklade • poradové číslo permutácie (ČP) 324156 bude väčšie ako ČP 312456 (=> väčšie ako 240) • zostáva zistiť: • poradie čísla 24156 • z 24156 urobíme permutáciu pre n = 5, nahradením číslic: • celý postup zopakujeme pre permutáciu 23145
Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 23145 • n = 5 (počet cifier) • k = 2 (prvá cifra je: 2) použijeme vzorec: (k-1)*(n-1)! = (2 - 1)*(5 - 1)! = 1*4! = 24 zostane číslo: 3145 - upravíme na: 2134
Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 2134 • n = 4 (počet cifier) • k = 2 (prvá cifra je: 2) použijeme vzorec: (k-1)*(n-1)! = (2 - 1)*(4 - 1)! = 1*3! = 6 zostane číslo: 134 - upravíme na: 123
Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 123 • n = 3 (počet cifier) • k = 1 (prvá cifra je: 1) použijeme vzorec: (k-1)*(n-1)! = (1 - 1)*(3 - 1)! = 0*2! = 0 zostane číslo: 23 - upravíme na: 12
Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 12 • n = 2 (počet cifier) • k = 1 (prvá cifra je: 1) použijeme vzorec: (k-1)*(n-1)! = (1 - 1)*(2 - 1)! = 0*1! = 0 zostane číslo: 2 - upravíme na: 1
Heslá: vysvetlenie na príklade Zisti poradové číslo permutácie: 1 poradové číslo permutácie 1 pre n = 1 je: 1 Poradové číslo permutácie: 324156 240 + 24 + 6 + 0 + 0 + 1 = 271
Heslá • Peter Fillo • Pohľad na mesto • Peter Lacko • Pohľad na mesto • Peter Lacko • Alergické červíky • Matúš Horváth • Zvláštna abeceda • Peter Trebatický • Simulácia robotov • Martin Kvasnička
Vstup: 2 5 6 3 10 5 4 8 7 1 2 3 4 5 6 7 8 9 10 11 12 ... 0 0 0 0 0 0 0 0 0 0 0 0 0 Pohľad na mesto: vysvetlenie na príklade Rozmery mesta umožňujú vytvoriť pole, do ktorého môžeme zaznačiť maximálne výšky budov
1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 ... ... ... 0 0 0 5 5 5 10 5 10 10 5 10 10 10 5 5 8 5 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Pohľad na mesto: vysvetlenie na príklade Pri načítavaní budov ukladáme do poľa maximálne výšky budov. Vstup:(2 5 6), (3 10 5), (4 8 7)
1 2 3 4 5 6 7 8 9 10 11 12 ... 0 5 10 10 10 8 8 0 0 0 0 0 0 Pohľad na mesto: vysvetlenie na príklade Nakoniec vypíšeme údaje, ktoré sú v poli. Výstup: 2 5 3 10 5 8 7 0
Heslá • Peter Fillo • Pohľad na mesto • Peter Lacko • Alergické červíky • Matúš Horváth • Alergické červíky • Matúš Horváth • Zvláštna abeceda • Peter Trebatický • Simulácia robotov • Martin Kvasnička
Alergické červíky: vysvetlenie • backtracking • rekurzívne prehľadanie všetkých možných ciest • rekurzívna funkcia hladaj(a, b) • vráti dĺžku najdlhšej cestu z bodu (a, b) • pole označujúce hodnoty, na ktoré je červík už alergický
Alergické červíky : vysvetlenie int hladaj(int a, int b){ if(<a, b> je mimo pola) return 0; if(alergia[pole[a][b]] == 1) return 0; alergia[pole[a][b]] = 1; max = maximum( hladaj(a - 1, b),hladaj(a + 1, b), hladaj(a, b – 1), hladaj(a, b + 1)); alergia[pole[a][b]] = 0; return max + 1; }
Heslá • Peter Fillo • Pohľad na mesto • Peter Lacko • Alergické červíky • Matúš Horváth • Zvláštna abeceda • Peter Trebatický • Zvláštna abeceda • Peter Trebatický • Simulácia robotov • Martin Kvasnička
Zvláštna abeceda: riešenie problému • Porovnať každé dve po sebe idúce slová • Prvé rozdielne písmeno • Písmeno z prvého slova je pred písmenom z druhého slova • Vytvoriť orientovaný graf • Vrcholy sú písmená • A je pred B • Rušiť vrcholy, do ktorých nevedie hrana A B
Zvláštna abeceda: príklad – zadanie • Slovník • XWYZXZXYZXWZWYXYZXYXYW
Zvláštna abeceda: príklad – zostrojenie grafu • Slovník • XWYZXZXYZXWZWYXYZXYXYW • Slovník • XWYZXZXYZXWZWYXYZXYXYW • Slovník • XWYZXZXYZXWZWYXYZXYXYW • Slovník • XWYZXZXYZXWZWYXYZXYXYW • Slovník • XWYZXZXYZXWZWYXYZXYXYW • Slovník • XWYZXZXYZXWZWYXYZXYXYW X Z W Y
X Z Z W Y W Y W Y W Zvláštna abeceda: príklad – rušenie vrcholov • Výstup • XZY • Výstup • XZ • Výstup • X • Výstup • Výstup • XZYW X Z Y
Heslá • Peter Fillo • Pohľad na mesto • Peter Lacko • Alergické červíky • Matúš Horváth • Zvláštna abeceda • Peter Trebatický • Simulácia robotov • Martin Kvasnička • Simulácia robotov • Martin Kvasnička
Simulácia robotov: spôsoby riešenia • podľa alokácie poľa • staticky • dynamicky • podľa veľkosti poľa • pole n×m→ veľa pamäte • 4 polia 1×n
Simulácia robotov: štruktúra programu while (mám príkazy AND ešte som sa nestratil) zisti príkaz (case – P, L, V) case smer (príkaz V) • 0 (sever) • 1 (východ) • 2 (juh) • 3 (západ)
Sever = 0 Západ = 3 Východ = 1 Juh = 2 Simulácia robotov: pohyb doľava a doprava • L → if (smer = 0) then smer = 3 else smer = smer -1 → smer = (smer + 3) mod 4 • P → if (smer = 3) then smer = 0 else smer = smer +1 → smer = (smer + 1) mod 4
Simulácia robotov: pohyb dopredu • premenná indikujúca stratenie robota (Stratil) • 4 polia typu boolean (int) • poleS • poleV • poleJ • poleZ • prvok v poli je true, ak sa na ňom robot stratil (daným smerom) • horné hranice mapy – maxx, maxy