Bonjour,
Dans le cadre d'un projet (je précise que je ne suis pas encore expert en programmation) je suis amené à déterminer toute la zone d'éléments adjacents identiques à un élément donné d'une matrice de caractère (je travaille en C++)
J'explique ce que j'entends par là :
J'ai une matrice m*n composée de trois caractères différents (il y a donc des répétitions). Un élément est adjacent à un autre élément s'il est situé en dessous, au dessus, à droite ou à gauche de celui-ci (par exemple : les éléments adjacents à l'élément central M[i][j] sont M[i + 1][j], M[i - 1][j], M[i]j+1] et M[i][j - 1])
Soit donc un élément M[i][j] contenant le caractère X je dois trouver toute la zone d'éléments adjacentes à M[i][j] et contenant le même caractère X.
Pour ce faire je dois donc :
- déterminer tous les éléments adjacents à M[i][j] et contenant X
- déterminer tous les éléments contenant X adjacents à une case adjacente à M[i][j] contenant X
- ... (je continue ainsi jusqu'a être arrivé au bout de la zone)
Graphiquement sur un exemple :
Voilà M (contenant les caractères 1,a et y) :
Si je prends l'élément M[0][2] (ligne 0, colonne 2) la zone que je dois déterminer est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 a a a a a y y y y 1 1 a a a 1 1 1 1 a a a a a 1 y y 1 y y y y y y a a a a 1 a 1 y y 1 y 1 a 1 y y y a y 1 1 1 1 a y 1 1 a a 1 a a 1 1 1 y y y y 1 1 1 1 1 1 y 1 1 1 1 1
Savez-vous comment je pourrais écrire un tel algorithme en C++ ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 a a a a a a a a a a a a a a a a a
Je pense que par récurrence c'est faisaible mais je n'ai pas encore étudié cette méthode de programmation donc je dois y parvenir sans elle.
Si vous avez une idée je suis preneur![]()
merci
Partager