Pagini recente » Cod sursa (job #2020198) | Istoria paginii utilizator/vladmarinescu | Istoria paginii utilizator/vladxte08 | Statistici Razvan Musteata (RazvanMolo) | Diferente pentru fmi-no-stress-4/solutii intre reviziile 40 si 39
Nu exista diferente intre titluri.
Diferente intre continut:
Folosindu-ne de observatiile de mai sus, vom parcurge toate lungimile sirurilor pentru care trebuie sa actualizam matricea noastra, iar pentru fiecare lungime, vom seta capatul din stanga, $i$, capatul din dreapta va fi $i + lungime - 1$, si vom plimba indicele $k$ intre aceste doua capete.
== code(cpp) |
for ( int len = 4; len <= n; ++len ) // Parcurgem lungimile sirurilor de la 4 la n
for ( int i = 0; i < n; ++i ) // Setam capatul din stanga
if ( i + len - 1 < n ) { // Daca capatul din dreapta nu depaseste ultimul element al sirului
int j = i + len - 1; // Retin capatul din dreapta in variabila j
if ( s[i] == s[j] ) { // Daca elementele din capete sunt egale
for ( int k = i + 1; k < j; ++k ) // Setez indicele din mijloc
if ( d[i + 1][k - 1] && d[k + 1][j - 1] ) // Daca cele 2 secvente sunt bune
d[i][j] = 1; // Si secventa curenta este buna
}
if ( !d[i][j] ) { // Daca nu am setat pana acum secventa curenta ca fiind buna
for ( int k = i; k < j; ++k ) // Setez indicele din mijloc
if ( d[i][k] && d[k + 1][j] ) // Daca cele 2 secvente sunt bune
d[i][j] = 1; // Si secventa curenta este buna
for ( int len = 4; len <= n; ++len )
for ( int i = 0; i < n; ++i )
if ( i + len - 1 < n ) {
int j = i + len - 1;
if ( s[i] == s[j] ) {
for ( int k = i + 1; k < j; ++k )
if ( d[i + 1][k - 1] && d[k + 1][j - 1] )
d[i][j] = 1;
}
for ( int k = i; k < j; ++k )
if ( d[i][k] && d[k + 1][j] )
d[i][j] = 1;
}
==
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.