NOTE: Ceci est un problème difficile pour tous ceux qui aime les problèmes logiques, etc.Algorithme: Déterminer la forme de deux secteurs délimités par un chemin arbitraire, puis remplir un
Considérons une grille à deux dimensions rectangulaire de hauteur H et largeur W. Chaque espace sur la grille a une valeur, soit 0
1
ou 2
. Initialement, chaque espace sur la grille est un 0
, à l'exception des espaces le long de chacun des quatre bords, qui sont initialement un 2
. Ensuite, considérez un chemin arbitraire d'espaces de grille adjacents (horizontalement ou verticalement). Le chemin commence sur un 2
et se termine sur un 2
différent. Chaque espace le long du chemin est un 1
.
Le chemin divise la grille en deux "secteurs" de 0
espaces. Il y a un objet qui repose sur un espace 0
non spécifié. Le "secteur" qui ne contient PAS l'objet doit être entièrement rempli avec 2
.
définir un algorithme qui détermine les espaces qui doivent devenir 2
de 0
, étant donné un réseau (liste) des valeurs (0
, 1
ou 2
) qui correspondent aux valeurs de la grille, en allant du haut vers le bas, puis de gauche à droite. En d'autres termes, l'élément à l'index 0 dans le tableau contient la valeur de l'espace supérieur gauche de la grille (initialement 2
). L'élément à l'index 1 contient la valeur de l'espace dans la grille qui est dans la colonne de gauche, la deuxième à partir du haut, et ainsi de suite. L'élément à l'index H contient la valeur de l'espace dans la grille qui est dans la rangée du haut mais deuxième à partir de la gauche, et ainsi de suite.
Une fois l'algorithme terminé et le "secteur" vide rempli complètement avec 2
s, l'algorithme SAME doit être suffisant pour refaire le même processus. Le deuxième (et sur) temps, le chemin est toujours tiré d'un 2
à un autre 2
, à travers les espaces de 0
, mais la "grille" est plus petite parce que les 2
s qui sont entourés par d'autres 2
ne peuvent pas être touchés par le chemin (puisque le chemin est le long des espaces de 0
).
Je remercie quiconque est capable de comprendre cela pour moi, très beaucoup. Cela ne doit pas être dans un langage de programmation particulier; en fait, le pseudo-code ou juste l'anglais est suffisant. Merci encore! Si vous avez des questions, laissez un commentaire et je préciserai ce qui doit être spécifié.
Merci beaucoup! Je cherchais exactement cela, un algorithme de remplissage d'inondation, et je n'avais aucune idée par où commencer. –
De rien! :) – tzaman