online: 3; azi: 1086; total: 53092 Manual clasa a x a - Tehnici de implementarea algoritmilor - Recursivitate

Manual clasa a X a

Tehnici de implementarea algoritmilor

Recursivitate

Se citesc de la tastatură două numere naturale n şi m (n>=1, m>=1 şi n>=m). Să se genereze recursiv toate aranjementele de m elemente ale mulţimii (1, 2, 3, ..., n).
Pentru a genera recursiv toate aranjamentele de m elemente ale mulțimii (1, 2, 3, ..., n), putem folosi următorul algoritm:
# include < iostream >
using namespace std ;
void aranjamente ( int n, int m, int arr [], int index) {
if (index == m) { // am completat un aranjament
for ( int i = 0 ; i < m; i++) {
cout << arr [i] << " " ;
}
cout << endl ;
return ;
}
for ( int i = 1 ; i <= n; i++) {
bool valid = true ;
for ( int j = 0 ; j < index; j++) {
if ( arr [j] == i) {
valid = false ;
break ;
}
}
if (valid) {
arr [index] = i;
aranjamente(n, m, arr , index+ 1 );
}
}
}
int main () {
int n, m;
cout << " Introduceti n si m: " ;
cin >> n >> m;
int arr [m];
aranjamente(n, m, arr , 0 );
return 0 ;
}

Explicații: