Maison > développement back-end > C++ > Programmation en C++, trouver le nombre de chemins d'un point à un autre dans une grille

Programmation en C++, trouver le nombre de chemins d'un point à un autre dans une grille

PHPz
Libérer: 2023-08-29 22:25:03
avant
725 Les gens l'ont consulté

Programmation en C++, trouver le nombre de chemins dun point à un autre dans une grille

Dans cet article, on nous pose un problème dans lequel nous devons trouver le nombre total de chemins du point A au point B, où A et B sont des points fixes, c'est-à-dire A est le point du coin supérieur gauche de la grille et B est le point du coin inférieur droit de la grille, par exemple −

Input : N = 5
Output : 252

Input : N = 4
Output : 70

Input : N = 3
Output : 20
Copier après la connexion

Dans le problème donné, nous pouvons formaliser la réponse et dériver le résultat à travers des observations simples.

Méthode pour trouver la solution

Dans cette méthode, nous dérivons une formule par observation selon laquelle lorsque nous traversons la grille de A à B, nous devons aller à droite n fois et descendre n fois, ce qui signifie que nous devons tout trouver combinaisons de chemins possibles, nous obtenons donc la formule de combinaison de (n+n) et n.

Exemple

#include<bits/stdc++.h>

using namespace std;
int fact(int n){ // factorial function 
   if(n <= 1)
      return 1;
   return n * fact(n-1);
}
int main() {
   int n = 5; // given n
   int answer = 0; // our answer
   answer = fact(n+n); // finding factorial of 2*n
   answer = answer / (fact(n) * fact(n)); // (2*n)! / (n! + n!)
   cout << answer << "\n";
}
Copier après la connexion

Sortie

252
Copier après la connexion

Explication du code ci-dessus

Dans ce code, nous calculons la formule combinée de 2*n à n, car nous savons que du point A au point B, nous avons besoin exactement de deux directions 2 *n opérations sur , c'est-à-dire qu'il y a n opérations dans un sens et n opérations dans l'autre sens, on trouve donc toutes les combinaisons possibles de ces opérations, c'est-à-dire (2*n)!/ (n! + n! ) . La complexité temporelle globale du programme donné est O(1), ce qui signifie que notre complexité ne dépend pas du n donné.

Conclusion

Dans cet article, nous avons abordé le problème de trouver le nombre d'itinéraires d'un point à un autre point dans une grille. Nous avons également appris un programme C++ pour ce problème et notre approche complète pour le résoudre. Nous pouvons écrire le même programme dans d'autres langages tels que C, Java, Python et d'autres langages. Nous espérons que cet article vous a été utile.

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal