Envoyé par
Nemerle
Pourquoi ne pas simplement
1. Parcourir la matrice par lignes & colonnes croissantes
2. Pour chaque Xij=0, compter le nombre L de 0 adjacents en ligne et le nombre C de 0 adjacents en colonne (contenant Xij)
3. Prendre la partie de ligne ou de colonne si L>C ou inversement, SAUF si cette partie est déjà contenue dans un segment déjà construit
4. Garder donc dans une liste le nouveau segment éventuellement crée.
C'est itératif sur i*j et c'est simple! Plutôt que de garder un liste de segments crée, on peut avoir une matrice booléenne où on flagge les éléments i*j déja traités...