Nombre de chemins uniques avec obstacles (LeetCode 63 : Unique Paths II) en C++ et Java

Cet article présente une solution au problème LeetCode 63, qui consiste à compter le nombre de chemins uniques pour attteindre le coin inférieur droit d’une grille en présence d’obstacles. Le robot se déplace uniquement vers la droite ou vers le bas. Les obstacles sont représentés par la valeur 1 dans la grille, tandis que les cases vides sont ...

Publié le 14 juillet à 05h49

Gestion de la mémoire en C++ : new/delete, variantes de new et stratégies de libération

Les fonctions malloc et free proviennent de la bibliothèque standard C. Elles se contentent d'allouer et de libérer des blocs de mémoire brute sans aucune notion d'objet. En C++, lorsqu'on instancie un type non trivial (classe, struct avec logique), le cycle de vie nécessite l'appel du constructeur lors de la création et du destructeur lors de ...

Publié le 13 juillet à 23h29

Aspects méconnus des fonctions virtuelles en C++

Fonctions virtuelles : concepts fondamentaux Les fonctions virtuelles permettent une liaison dynamique des appels lors de l'héritage. Chaque classe contenant des fonctions virtuelles possède une table de fonctions virtuelles (vtable) stockant les adresses des implémentations. Lorsqu'un pointeur de classe de base référence un objet dérivé, la vt ...

Publié le 13 juillet à 10h42

Résolution de problèmes de compétition algorithmique en C++

Optimisation des entraînements militaires Approche gloutonne : Trier les soldats par nombre d'entraînements nécessaires. Calculer le coût total actuel et comparer avec le coût groupé pour prendre la décision optimale à chaque étape. #include <iostream> #include <vector> #include <algorithm> struct Soldat { long long prix; ...

Publié le 13 juillet à 00h57

Solution : Somme d'une suite définie par différences de nombres premiers

Énoncé du problème Soit \(n\) la longueur d'une suite \((a_i)\) définie ainsi : \(a_1\) est le \(n\)-ième nombre premier. Pour \(i \ge 2\), la différence \(a_i - a_{i-1}\) est le \(i\)-ème nombre premier en partant de la fin (c'est-à-dire le \((n-i+1)\)-ième nombre premier). On demande la somme de tous les termes de cette suite. Approche Avec ...

Publié le 12 juillet à 05h37

CMake : guide pratique de l'outil de génération de builds

Vue d'ensemble de CMake CMake est un méta-générateur de systèmes de construction. Il ne compile pas directement le code source, mais produit les fichiers nécessaires à un outil de build natif. Selon la plate-forme cible, il génère des solutions Visual Studio (.sln), des Makefile, des projets Xcode ou des fichiers build.ninja. Cette abstraction ...

Publié le 12 juillet à 05h22

Gestion de la mémoire dynamique en C++ avec les pointeurs intelligents

Mémoire dynamique en C++ Les programmes précédents utilisaient des objets avec des durées de vie prédéfinies : Objets globaux : alloués au lancement, détruits à l'arrêt Objets locaux automatiques : créés à l'entrée du bloc, détruits à la sortie Objets statiques locaux : alloués avant première utilisation, détruits à l'arrêt Pour dépasser ces ...

Publié le 12 juillet à 03h40

Images de profondeur avec PCL

Les méthodes d'acquisition des images de profondeur incluent la lidar, la vision stéréoscopique par ordinateur, les machines à mesurer coordonnées, les franges de Moiré et la lumière structurée. Les recherches sur les images de profondeur se concentrent principalement sur les aspects suivants : Techniques de segmentation des images de profonde ...

Publié le 12 juillet à 00h25

Solutions des Problèmes A à E : Codeforces Round 976 (Div. 2)

Problème A Énoncé : On vous donne deux entiers \(n\) et \(k\). En une opération, vous pouvez soustraire n'importe quelle puissance de \(k\) (c'est-à-dire \(k^x\) pour \(x \ge 0\)) de \(n\). Trouvez le nombre minimum d'opérations pour réduire \(n\) à \(0\). Analyse : La solution optimale consiste à représenter \(n\) en base \(k\). Le nombre mini ...

Publié le 12 juillet à 00h01

Simulation dans les algorithmes et structures de données

Présentation de la simulation La simulation est une technique fondamentale en informatique, souvent la première rencontrée par les étudiants en algorithmique. Sa difficulté peut varier considérablement, allant de problèmes simples comme « A+B » ou « Arbres devant l'école » à des défis complexes tels que « Porc Killer » ou « Batialle spatiale su ...

Publié le 11 juillet à 22h12