Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
potřebuju vymyslet algoritmus, který v matici n x n (vzájemně různé prvky) najde lokální maximum v čase O(n). U aktuálního prvku porovnává sousedy (nahoře, dole, vlevo, vpravo).
Výsledný algoritmus by měl být rekurzivní.
Napadlo mě něco takového (je to potřeba upravit, aby se vždy vybral největší soused):
FindMax(matrix, x, y)
{
...some code should be here...
If(matrix[x+1,y] > matrix[x,y])
FindMax(matrix, x+1, y)
else if(matrix[x,y+1] > matrix[x,y])
FindMax(matrix, x, y+1)
...
some code
....
}
Máte nějaký tip? Co by mohlo pomoct?
Offline
Zdravím, najjednoduchší spôsob co asi je to spraviť tak ze das si nejakú pomocnú premennú rovnú 0, potom podmienky ci x+1 nieje mimo rozsah ak nie porovnaš ho s tou pomocnou premennou ak je väčši tak tu pomocnú premennú prepisešem a tak to spravíš aj pre x-1, y+1, y-1. Nieje to najneefektívnejšie riešenie bude tam 8 podmienok, ale malo by to fungovať
Offline
Stránky: 1