Am gasit o problema de dinamica pe campion:
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=616 Fie A si B doua siruri formate din maxim 1000 litere mici ale alfabetului englez.
Un subsir al unui sir este format din caractere (nu neaparat consecutive) ale sirului respectiv, în ordinea în care acestea apar în sir.
Cerinta
Scrieti un program care sa determine cel mai scurt subsir al sirului A, care nu este subsir al sirului B.
Stiu relatia de recurenta la cel mai lung subsir comun dar nu stiu cum sa o adaptez pentru acest caz...
for ( int i = 1; i <= lgA; i++ )
for ( int j = 1; j <= lgB; j++ )
if ( A[i] != B[j] )
D[i][j] = D[i - 1][j - 1] + 1;
else
D[i][j] = min ( D[i][j - 1], D[i - 1][j] );
Recurenta de mai sus este cea la care m-am gandit dar merge pe majoritatea testelor.