Maison >développement back-end >C++ >À l'aide de la programmation C++, trouvez le nombre d'arrêts

À l'aide de la programmation C++, trouvez le nombre d'arrêts

WBOY
WBOYavant
2023-09-20 15:13:011307parcourir

Il y a n gares intermédiaires entre le point X et le point Y. Calculez le nombre de façons différentes dont un train peut être disposé pour s'arrêter à s gares afin qu'aucune gare ne soit adjacente l'une à l'autre. C'est pourquoi, dans cet article, nous expliquerons différentes manières possibles de connaître le nombre d'arrêts. En regardant ce problème, nous pouvons voir que nous devons trouver des combinaisons qui permettent au train de s'arrêter à s gares.

Solution au problème

Donnons un exemple : il y a huit gares intermédiaires et nous devons trouver un moyen d'arrêter le train à trois gares intermédiaires.

n = 8, s = 3

Nous avons aussi des (n - s) gares, soit cinq gares où le train ne peut pas s'arrêter,

À laide de la programmation C++, trouvez le nombre darrêts

Nous avons cinq gares A, B, C, D, E, où le train ne peut pas s'arrêter. Nous disposons maintenant de six points pour organiser les trois arrêts de manière à ce qu'il n'y ait pas deux arrêts consécutifs. Par conséquent, le nombre de façons est de -

6<sub>c<sub>3</sub></sub>= [fact(6) - fact(3)] / fact(3) = 6 * 5 * 4 / 3 * 2 * 1 = 20

Il existe 20 façons de programmer trois arrêts à partir du point X et du point Y. Voici donc l'exemple -

Input : n = 15 s = 4
Output : 495
Input : n = 8 s = 3
Output : 20

Exemple

La traduction chinoise est :

Exemple

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n = 8, s = 3;
    int flag1 = 1, flag2 = 1, temp = s, ans;
    // selecting &#39;s&#39; positions out of &#39;n-s+1&#39;
    int x = n - s + 1;
    while (x != (n - 2 * s + 1)) {
       flag1 = flag1 * x;
       x--;
    }
    while (temp != 1) {
       flag2 = flag2 * temp;
       temp--;
    }
    ans = flag1 / flag2;
    if ((n - s + 1) >= s)
       cout << "Number of ways : " << ans;
    else
       cout << "not possible to find";
    return 0;
}

Sortie

Number of ways : 20

Explication du code ci-dessus

Afin de comprendre ce code C++, nous pouvons diviser la solution en plusieurs étapes.

  • prend le nombre de stations en nombre n et les stations d'arrêt en s comme entrée.

  • Initialisez les variables flag1 et flag 2 avec 1 et stockez la valeur de s dans la variable temp.

  • Calculez flag1, qui est le numérateur [fact(n) -fact(r)].

  • Calculez flag2, qui est le dénominateur [fact(r)]

  • Imprimez le résultat.

Conclusion

Dans cet article, nous avons résolu le problème de trouver le nombre de façons dont un train peut s'arrêter à une gare intermédiaire de telle sorte qu'il n'y ait pas deux gares consécutives. Nous avons également appris un programme C++ pour résoudre ce problème et une méthode complète pour résoudre ce problème. Nous pouvons écrire le même programme dans d’autres langages, tels que C, Java, Python et d’autres langages.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer