Menu


1NSI

Les exercices python à connaître

programme de première
E1:listes
E2:listes
E3:listes
E4:tri par insertion
E5:tri par séléction
E6:dictionnaires / string
E7:tuple
E8:boucle / booléen / liste
E9:string
E10:dictionnaire / fonctions
E11:booléens / listes
récursivité
E1:somme d'entiers
E2:chiffres romains
E3:factorielle
E4:rendu de monnaie
POO
E1:la classe Chien
E2:carrés semi-magiques
E3:filtre sur une pile
E4:durées en POO
Arbres
E1: Hauteur et taille d'un arbre
E2: parcours 1
E3: parcours 2
E4: Recherche dans un ABR
E5: Arbre binaire additif
E6: Arbre binaire de recherche
Diviser pour régner
E1:sommet d'un tableau
E2:Indice d'une panne
E3:calcul d'une puissance
Sécurisation des communications
E1:code César
E2:Vigenre
programmation dynamique
E1:Nombres de Delannoy
E2:Communication des acacias
E2:Mineur (le meilleur filon)

Nombres de Delannoy

Dans une grille de taille \(n×m\), on souhaite compter tous les chemins allant du coin inférieur gauche (au Sud-Ouest) vers le coin supérieur droit (au Nord-Est).
Les seuls mouvements autorisés sont :

  • ↑ Aller au Nord d'une unité.
  • → Aller à l'Est d'une unité.
  • ↗ Aller au Nord-Est en diagonale, sur le prochain nœud.

Les chemins pour aller de (0, 0) à ((3, 3) :

delanoy.png

Pour écrire une fonction delannoy qui prend en paramètres deux entiers n et m et renvoie le nombre de chemins allant de (0, 0) jusqu'à (n, m), on remarquera :

  • Si n ou m est nul,
    • alors le seul chemin est en ligne droite, la réponse est 1,
  • sinon, n et m sont non nuls et les chemins qui vont en (n, m) se répartissent en trois catégories :
    • ceux qui venaient de (n - 1, m ),
    • ceux qui venaient de (n , m - 1),
    • ceux qui venaient de (n - 1, m - 1).
    Cces trois catégories sont distinctes et se comptent bien par récursivité.

On utilisera un dictionnaire pour mémoriser les résultats intermédiaires.

Exemples :
>>> delannoy(3, 3)
63
>>> delannoy(2, 31)
5

source : https://codex.forge.apps.education.fr