Salve a tutti,
la settimana scorsa ho fatto un esame di programmazione in cui mi veniva proposto il seguente esercizio:
"Data una matrice A(MxM) determinare con una funzione booleana ricorsiva se almeno una colonna di indice dispari è uguale ad una riga di indice pari letta dall'ultimo al primo elemento.
Es.
3 1 7 2 6
4 4 8 9 5
2 5 5 4 1
2 5 5 4 1
1 2 5 6 7
Risposta: colonna 1, riga 2 -> TRUE".
Ora, questo esercizio non l'ho svolto ma ho comunque passato la prova scritta e adesso il problema è eventualmente spiegare la soluzione di questo esercizio alla prova orale.
Ho abbozzato una prima soluzione che è questa:
Il problema che mi pongo è che utilizzo 4 indici per confrontare righe e colonne e quindi vi chiedo se fosse possibile utilizzare solo 2 indici per il confronto in modo da semplificare la funzione.codice:bool Funz(int A[][M],int i,int j,int h,int k){ if(j>=M) return false; else if(i>=M) return true; else if(h>=M) return Funz(A,0,j+2,0,M-1); else if(A[i][j]==A[h][k]) return Funz(A,i+1,j,h,k-1); else return Funz(A,0,j,h+2,M-1); }
Aspetto vostre risposte! Grazie in anticipo!
Edit: ho dimenticato di precisare le precondizioni della funzione che sono i=0,j=1,h=0,k=M-1;
inoltre ho corretto le chiamate ricorsive...aspetto sempre vostre risposte![]()


Rispondi quotando