Salve, sono una capra nella ricorsione, stranamente sembra che abbia risolto correttamente questo problema, a parte il testcase 005 in cui mi dice “Risposta errata (lunghezza errata)”
Prima di arrivare a 89/100 stampavo la soluzione in questo modo:
for (int i=0; i<m; i++)
cout << mat[pos[i]] << "\n";
E, leggendo qua, l’ho cambiata in modo che stampasse ogni singolo carattere, così:
for (int i=0; i<m; i++){
for (int j=0; j<n; j++)
cout << mat[pos[i]][j];
cout << "\n";
}
Così funziona su ogni caso che ho trovato/creato, il testcase 005 però non ne vuole proprio sapere niente.
La funzione ric() fa questo:
- se tutti i numeri sono stati usati controlla se quella particolare configurazione è accettabile, se sì la stampa ed esce
- ad ogni numero non usato viene assegnato un indice uguale a quanti numeri sono stati usati, viene segnato come usato, viene richiamata la funzione poi viene segnato come non usato.