Pagini recente » Diferente pentru template/abc intre reviziile 20 si 19 | Istoria paginii utilizator/alexflo | Monitorul de evaluare | Monitorul de evaluare | Diferente pentru grigore-moisil-2010/solutii/pietre2 intre reviziile 3 si 2
Nu exista diferente intre titluri.
Diferente intre continut:
== code(cpp) |
Algoritm Pietre(n,t): // n: dimensiunea tabloului t
max = 0 // lungimea maximă a drumului
maxlin = 0 // linia de unde porneşte cel mai lung drum
maxcol = 0 // coloana de unde porneşte cel mai lung drum
lin = 1 // vom încerca să intrăm în tablou pornind din linia 1
max = 0 // lungimea maximă a drumului }
maxlin = 0 // linia de unde porneşte cel mai lung drum }
maxcol = 0 // coloana de unde porneşte cel mai lung drum }
lin = 1 // vom încerca să intrăm în tablou pornind din linia 1 }
pentru col=1,n execută:
maxnou = 0 // maximul actual
rez[lin,col] = 1 // marcăm punctul de pornire
cauta(lin,col,2) // căutăm un drum având acest punct de start
dacă maxnou > max atunci // actualizarea
maxnou = 0 // maximul actual }
rez[lin,col] = 1 // marcăm punctul de pornire }
cauta(lin,col,2) // căutăm un drum având acest punct de start }
dacă maxnou > max atunci // actualizarea }
max = maxnou
maxlin = lin
maxcol = col
sfârşit(algoritm)
Algoritm Cauta(lin,col,pas):
pentru i=1,4 execută: // un element are 4 vecini
lin_nou = lin + x[i] // indicele de linie al vecinului
col_nou = col + y[i] // indicele de coloană
pentru i=1,4 execută: { un element are 4 vecini }
lin_nou = lin + x[i] //{ indicele de linie al vecinului }
col_nou = col + y[i] //{ indicele de coloană }
//{ dacă am generat o poziţie pe teren }
dacă (lin_nou = {1,2,...,n}) şi (col_nou = {1,2,...,n}) atunci
dacă rez[lin_nou,col_nou] = 0 atunci // dacă nu am fost aici
//{ dacă numărul pietrelor este cu 1 mai mare
dacă rez[lin_nou,col_nou] = 0 atunci //{ dacă nu am fost aici }
//{ dacă numărul pietrelor este cu 1 mai mare }
dacă t[lin_nou,col_nou] = t[lin,col] + 1 atunci
rez[lin_nou,col_nou] = pas // facem pasul
dacă pas > maxnou atunci //actualizăm maximul actual
rez[lin_nou,col_nou] = pas //{ facem pasul }
dacă pas > maxnou atunci { actualizăm maximul actual }
maxnou = pas
sfârşit(dacă)
Cauta(lin_nou,col_nou,pas+1) // încercăm să continuăm drumul
rez[lin_nou,col_nou] = 0 // ştergem pasul, pentru că vom căuta alt drum
Cauta(lin_nou,col_nou,pas+1) { încercăm să continuăm drumul }
rez[lin_nou,col_nou] = 0 { ştergem pasul, pentru că vom căuta alt drum }
sfârşit(dacă)
sfârşit(dacă)
sfârşit(dacă)
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.