Retour aux défis
Moyen 0 résolus 0 % de réussite

Compter les chemins dans une grille

Comptez les itinéraires à travers une grille rectangulaire en n'utilisant que des déplacements vers la droite et vers le bas.

Ce que vous allez apprendre

  • Compter les chemins d'une grille avec une table de DP
  • Reconnaître des coefficients binomiaux
  • Éviter le dépassement avec de grands nombres

Problème

Commencez dans le coin supérieur gauche d'une grille comportant rows lignes et columns colonnes de cases. Déplacez-vous uniquement le long des arêtes des cases, d'une case à la fois, soit vers la droite, soit vers le bas, jusqu'à atteindre le coin inférieur droit. Comptez le nombre de séquences de déplacements distinctes. La grille ne contient aucun obstacle.

Une grille de 2 lignes et 3 colonnes nécessite exactement 2 déplacements vers le bas et 3 vers la droite.

Implémentez lattice_paths(rows, columns).

Entrée

rows : Le nombre de lignes de cases, et non de sommets.

columns : Le nombre de colonnes de cases, et non de sommets.

Sortie

Retournez le nombre d'itinéraires du coin supérieur gauche au coin inférieur droit.

Contraintes

0 ≤ rows, columns ≤ 30 et rows + columns ≤ 60. Zéro dans une dimension donne un chemin direct. Une grille 0 × 0 possède un unique chemin vide. Les résultats tiennent dans un entier signé 64 bits.

Exemples

Exemple 1
Entrée :
rows = 2
columns = 3

Sortie attendue :
expected = 10
Entrée :
long long rows = 2;
long long columns = 3;

Sortie attendue :
long long expected = 10;
Entrée :
long rows = 2;
long columns = 3;

Sortie attendue :
long expected = 10;

Explication

Chaque itinéraire comporte cinq déplacements. Choisir lesquels sont les deux déplacements vers le bas donne dix itinéraires distincts.

Exemple 2
Entrée :
rows = 0
columns = 4

Sortie attendue :
expected = 1
Entrée :
long long rows = 0;
long long columns = 4;

Sortie attendue :
long long expected = 1;
Entrée :
long rows = 0;
long columns = 4;

Sortie attendue :
long expected = 1;

Explication

Il n'existe que le chemin direct composé de quatre déplacements vers la droite.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Chaque chemin n’est qu’un ordre possible des mouvements vers le bas et vers la droite requis.

Indice 2

Compte combien de façons il y a de choisir les positions d’un type de mouvement parmi tous les mouvements, plutôt que d’explorer les chemins un par un.

Indice 3

Fais attention aux grilles dégénérées : si une dimension vaut zéro, il existe exactement un chemin tout droit, et une grille 0×0 a aussi un seul chemin vide.

Complexité attendue

temps O(min(rows, columns)), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.