float descida_randomica(int n, int *s, float **d, int iter_max)
{
  int aux, iter_sem_melhora, i, j;
  float fo_viz, fo;

  iter_sem_melhora = 0;
  fo = fo_viz = calcula_fo(n, s, d);
  printf("Fo = %f \n", fo);
  do{
     iter_sem_melhora++;
     i = random(n);
     do{
       j = random(n);
     } while (j == i);
     float delta1 = calcula_delta(n, s, d, i, j);
     // Faz o movimento
     aux = s[j];
     s[j] = s[i];
     s[i] = aux;
     float delta2 = calcula_delta(n, s, d, i, j);
     fo_viz = fo - delta1 + delta2;
     if (fo_viz < fo){
          fo = fo_viz;
          iter_sem_melhora = 0;
          printf("Fo = %f \n", fo);
          //getchar();
     }
     else{
       // Desfaz o movimento
       aux = s[j];
       s[j] = s[i];
       s[i] = aux;
     }
  } while (iter_sem_melhora < iter_max);
  return fo;
}
