Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Algorithmique] Bloqué sur un exercice

Sujet résolu
    21 mars 2019 à 9:06:23

    Bonjour tout le monde. Je suis bloqué sur un exercice de France IOI : Lien.

    Le problème doit venir de l'algorithme, mais je ne trouve rien même en y revenant deux jours plus tard.

    import algorea.Scanner;
    class Main {
       static Scanner sc = new Scanner(System.in);
       public static void main(String[] args) {
          int nbMesures = sc.nextInt();
          double diffMax = sc.nextDouble();
          double[] mesures = new double[nbMesures];
          for(int i=0; i<mesures.length; i++){
             mesures[i]= sc.nextDouble();
          }
          int nbLissages =0;
          // les variables sont initialisées
          while(!seuilOK(mesures, diffMax)){
             mesures =lissage(mesures);
             nbLissages++;
          }
          System.out.println(nbLissages);
       }
          // la fonction parcourt la liste de valeurs et s'arrete si elle trouve deux valeurs dont
          // la différence dépasse le seuil
       static boolean seuilOK(double[] valeurs, double seuil){
          boolean fini = true;
          for(int i =0; i<valeurs.length-1; i++){
             double différence = valeurs[i]-valeurs[i+1];
             if(différence<0){
                différence = -différence;
             }
             if(différence>seuil){
                fini = false;
                break;
             }
          }
          return fini;
       }
          // La fonction effectue un lissage en passant par un second tableau Tmp pour ne pas 
          // biaiser le lissage
       static double[] lissage(double[] valeurs){
          double[] valeursTmp = valeurs;
          for(int i=1; i<valeurs.length-1; i++){
             valeurs[i]=(valeursTmp[i-1]+valeursTmp[i+1])/2;
          }
          return valeurs;
       }
    }

    Le programme semble lisser trop vite la liste de valeurs. Le résultat attendu est de 13 lissages successifs sur le premier exemple, mon code n'en fait que 3. j'avoue être un peu perdu.


    Merci par avance de vos réponses.

    -
    Edité par SamyRitleku 21 mars 2019 à 9:07:16

    • Partager sur Facebook
    • Partager sur Twitter

    [Algorithmique] Bloqué sur un exercice

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown