grazie per l'aiuto
ho provato una soluzione simile alla tua, ma non funziona bene, sempre meglio della prima
Il percorso però deve andare dalla casella [0][0] a [n][n] cioè dalla prima casella in alto a sinistra all'ultima in alto a destra.
ho scritto questa funz, ma
codice:
int percorri(int M[8][8], int nr, int nc, int r, int c){
somma=somma+M[r][c];
if(somma==250 && r==8 && c==8){
printf("%d", M[r][c]);
return 1;
}
else if(somma < 250){
if(c<7)
if(percorri(M,nr,nc,r,c+1)==1){
printf("casella %d, somma %d\n", M[r][c], somma);
return 1;
}else{
somma=somma-M[r][c+1];
}
if(r<7)
if(percorri(M,nr,nc,r+1,c)==1){
printf("casella %d, somma %d\n", M[r][c], somma);
return 1;
}else{
somma=somma-M[r+1][c];
}
if(c>0)
if(percorri(M,nr,nc,r,c-1)==1){
printf("casella %d, somma %d\n", M[r][c], somma);
return 1;
}else{
somma=somma-M[r][c-1];
}
if(r>0)
if(percorri(M,nr,nc,r-1,c)==1){
printf("casella %d, somma %d\n", M[r][c], somma);
return 1;
}else{
somma=somma-M[r-1][c];
}
}
}
non so se sbaglio la posizioni dei controlli..
la mia mente ha difficoltà a ragionare ricorsivamente la ricorsione.