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
cawte. potrebovala by som pomoc s tymto prikladom.
luka ma tvar NxN na kazdom policku rastie kvietok, kt. je obodovany (jeho krasa sa boduje)
po luke skace konik a moze sa pohnut na ine policko luky iba ak sa jedna suradnica lisi od druhej prave o jednu a v druhej o viac ako jednu. a hodnota kvietku musi byt vacsia ako ta predchadzajuca.
takze vstup: v prvom riadku je cele cislo N. v druhom su dve cele cisla R a C, kt. predstavuju zaciatocnu poziciu konika. nasleduje N riadkov po N celych cisel. su v rozsahu od 1 po milion a predstavuju krasu jednotlivych kvietkov.
na vystupe je v jednom riadku jedno cele cislo, kt. predstavuje pocet kvietkov, na kt. konik stupil.
pre nazornost
input output
4 4
1 1
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
lebo zacina na (1,1) potom ide na (2,3), (4,2), a (3,4)
riesila som to uz velakrat a stale mi to nevychadza. musim program poslat na otestovanie, a tam mi to nejde, hoci doma mi urobi to, co ma. dakujem vopred kazdemu, kto sa mi pokusi pomoct s riesenim.
Offline

↑ kima:A co se chce po nás? Pokud chceš vědět, proč Tvůj program nefunguje, tak dej zdroják buď sem nebo třeba na http://uloz.to a možná na něco příjdeme.
Taky mi trochu schází informace o tom, kam má koník dojít. Nebo má skákat tak dlouho, jak je to možné?
Offline
↑ Kondr:
ano, ma skakat dovtedy, kym je to mozne. ten moj program som uz uplne dokazila. snazila som sa tam to opravovat jak sa dalo, ale nejde a uz tam je vsetko domylene. bola by som rada, keby niekto to mohol vyriesit. hlavne, mam jeden velky problem s tym, ze ako sa nacitavaju udaju z klavesnice, ak maju byt v jednom riadku oddelene medzerou. som vzdy pouziva iba read alebo readln, o inom sposobe neviem.....
Offline

Ahojte :) Chcela by som sa spytat ako ste spominany problem vyriesili. Lebo niesom si ista v podobnom zadani,
Offline
Tak dá se to řešit algoritmem založeném na prohledávání do hloubky (backtracking).
Pascal už jsem dávno zapomněl, tak to napíšu v nějakym pseudokódu. Pro rozumný použití by to ještě chtělo doladit (např ty globální proměnné atd).
function konik(x,y,cislo_tahu,cesta){
if(cislo_tahu > maximalni_cislo_tahu){
maximalni_cislo_tahu = cislo_tahu
maximalni_cesta = maximalni_cesta + "(x,y),"
}
dostupna_pole = pole_kam_muzu_jit(x,y)
foreach(mozne_pole in dostupna_pole){
konik(mozne_pole.x, mozne_pole.y, cislo_tahu+1,cesta + "(x,y)")
}
}
A celý se to zavolá takhle:
maximalni_cislo_tahu = 0
maximalni_cesta = ""
konik(startovniX, startovniY, 0, "")
a výsledek pak bude v
maximalni_cislo_tahu a maximalni_cesta. Neimplementoval jsem funkci pole_kam_muzu_jit, ale tam nebude nic moc težkýho, vezme všechny pole, který připadají v úvahu a vrátí je v poli/kolekci.
Snad jsem tam takhle narychlo nic nezmršil...
Offline