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