IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

"Le compte est bon" (Algorithme récursif) (PHP<->C++)


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut "Le compte est bon" (Algorithme récursif) (PHP<->C++)
    Salut à tous ,

    Je m'entraîne pour l'olympiade national de programmation (tunisien) , et je me suis heurté à ce problème qui a été proposé lors d'un olympiade régional , voilà le texte du problème :
    "Le compte est bon" est un jeu très populaire dont le principe est simple : on donne des valeurs entières, et il faut trouver une formule mathématique utilisant une fois au plus chacune de ces valeurs, et dont le résultat soit égal à un nombre donné.

    Plus précisément, on donne 6 nombres entiers, appelées les "plaques", choisis dans l'ensemble {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100}. On se demande alors s'il est possible d'obtenir une valeur donnée entre 0 et 999 en combinant les valeurs de départ à l'aide des quatre opérateurs élémentaires, qui sont l'addition, la soustraction (lorsqu'elle donne un résultat positif), la multiplication, et la division entière (lorsqu'elle tombe juste). Les valeurs de départ ne peuvent être utilisées qu'une seule fois au plus chacune. On doit toujours utiliser au moins une plaque, y compris si la valeur à atteindre vaut 0.

    Par exemple, avec les plaques 4, 9, 8, 2, 8, et 75, on peut obtenir le nombre 309 de la manière suivante :

    309 = 4 * (75 + 2) + (8 / 8)

    Notez que la plaque 9 n'a pas été utilisée, et que chacune des deux plaques 8 a été utilisée une fois. Notez que l'on n'a pas le droit de faire des opérations comme 9 / 2, ni 2 / 4, ni 2 - 4.

    Le but de ce sujet est de déterminer le nombre de valeurs différentes qu'il est possible d'obtenir à partir d'un ensemble fixé de plaques.

    CONTRAINTES

    * 1 <= N <= 6, où N est le nombre de plaques.

    * Vi dans l'ensemble {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100}, où Vi est la valeur d'une plaque.

    ENTRÉE

    * Un entier N : le nombre de plaques.

    * Les N entiers : les valeurs des plaques.

    SORTIE

    Affichez un entier : le nombre de valeurs différentes que l'on peut atteindre entre 0 et 999 inclus.

    EXEMPLE

    ENTREE
    3
    1 3 5
    Sortie : 16
    J'ai demandé à un ami de me donner sa solution et c'est dans ce lien .
    Mais le problème c'est que je ne comprends pas le C++ , je fais du PHP et un peu de C pas plus . Alors si vous pouvez m'expliquer qu'es ce qu'il a fait exactement et c'est quoi l'algorithme qu'il a utilisé , ça serai très gentil de votre part et si vous pouvez traduire son code en C ou en PHP pour que je comprenne .

    Une petite dernière question : es ce que vous pensez que c'est un problème difficile ou simple parce que je déprime (un peu exagéré mais bon ) et l'épreuve est prévue pour le lundi

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 049
    Points
    33 049
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    sans apporter de solution : un code C++ est aisément transposable en php. Et celui proposé s'y prête vraiment bien, il ne fait appel à rien de particulier ni particulièrement difficile.
    A supposer qu'il soit correct en tous cas, je n'ai pas vérifié.

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Le seul point un peu spécifique au C++ que j'ai vu est vector<int>. Un vector<int> est un tableau d'entier redimensionnable. On accède au i-ème élément par v[i], temp.erase(temp.begin()+j); efface le j-ème élément, et v.resize(x) change sa taille (en mettant des 0 dans les nouvelles cases).

Discussions similaires

  1. Le compte est bon pour 8 cartes ou plus qui ne soit pas récursif
    Par twilightZone dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 11/04/2015, 21h34
  2. Le compte est bon : algorithme de résolution
    Par Magicarpet dans le forum C
    Réponses: 20
    Dernier message: 09/02/2011, 19h37
  3. Réponses: 6
    Dernier message: 04/01/2011, 18h18
  4. [Jeu "Le Compte est Bon"] Recherche algorithme
    Par Chriss21 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 29/10/2005, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo