per esempio in questo modo, ritorna una sequenza di spostamenti, ad un certo punto si interrompe, ma non con un percorso corretto.

codice:
int percorri(int M[8][8],int r, int c){
    
    somma=somma+M[r][c];
    if(somma==250 && r==7 && c==7){
        printf("%d", M[r][c]);
        printf(" somma %d", somma);
        return 1;
    }
    else if(somma < 250){
        if(c<7){
            if(percorri(M, r,(c+1))==0){
                somma=somma-M[r][c+1];
            }else{
                  printf("\n%d", M[r][c+1]);
                  printf(" somma %d", somma);
                  return 1;      
            }
        }
        if(r<7){
            if(percorri(M,(r+1),c)==0){
                somma=somma-M[r+1][c];
            }else{
                  printf("\n%d", M[r+1][c]);
                  printf(" somma %d", somma);
                  return 1;      
            }
        }
        if(c>0){
            if(percorri(M, r,(c-1))==0){
                somma=somma-M[r][c-1];
            }else{
                  printf("\n%d", M[r][c-1]);
                  printf(" somma %d", somma);
                  return 1;      
            }
        }
        if(r>0){
            if(percorri(M,(r-1),c)==0){
                somma=somma-M[r-1][c];                              
            }else{
                  printf("\n%d", M[r-1][c]);
                  printf(" somma %d", somma);
                  return 1;      
            }
        }
    }
    else if(somma>250){
         somma=somma-M[r][c];
         return 0;     
    }  
}
fra l'altro in output la somma è sempre 151