[algorithme] Récursivité langage C

Fermé
Guillaume - 28 déc. 2006 à 21:37
 Guillaume - 29 déc. 2006 à 21:25
Bonjour,

J'essaie de programmer un jeu de dames avec des règles spéciales, où le joueur doit faire un maximum de prises au cours de son tour.
Voici ce que j'aimerais arriver à faire : si le programme voit qu'il y a une ou plusieurs prises possibles, il demande à l'utilisateur de choisir entre tous les parcours possibles celui qu'il préfère, mais seuls les parcours qui prennent le plus de pions à l'adversaire sont retenus (et affichés).

Je ne sais pas comment partir pour faire une fonction de ce genre. J'avais pensé à une fonction récursive, mais je ne sais pas comment la construire et quoi lui faire renvoyer.

Quelqu'un a-t-il une idée s'il-vous-plait?


But : Si on numérote les abscisses du damier de A à J et et les ordonnées de 1 à 10, on devrait proposer à l'utilisateur de choisir entre plusieurs combinaisons, par exemple (pour 2 prises):
-choix 1 : A1 --> C3 -->A5
-choix 2 : A1 --> C3 -->E5
-choix 2 : E3 --> G5 -->E7
La difficulté est dans le fait qu'à partir d'une position de départ ou d'une position intermédiaire, on peut avoir plusieurs ramifications, et je ne vois pas comment stocker tout ça dans un tableau.

Les positions des pièces sont stockées dans un tableau [10][10]. Ce tableau représente le damier. Par exemple tableau[3][5] représente la case D6. tableau[3][5]=0 si c'est une case vide, 1 s'il y a un pion blanc dessus, etc.

J'ai déjà plusieurs fonctions qui :
- calculent le nombre maximal de prises pour une pièce donnée.
- calculent les choix offerts pour une et une seule prise (par exemple, si un pion peut manger en avant à gauche et à droite, renverra 2, mais ne regarde pas si d'autres prises sont possibles ensuite).

Si quelqu'un a une idée il est le très bienvenu :)

Merci d'avance!
A voir également:

1 réponse

doc manu Messages postés 6 Date d'inscription samedi 28 octobre 2006 Statut Membre Dernière intervention 10 janvier 2007
29 déc. 2006 à 00:05
Je pense que tu devrais t'interesser aux listes chainées pour le stockage de tes données. Une liste chainee permet de stocker un nombre indéfini de valeurs. En stockant dans une liste chainées des pointeurs vers d'autres listes chainées et ainsi de suite tu peux créer une structure arborescente de données.

Cree une liste chainée contenant tes points de départ.
Ton algorithme recursif devra parcourir cette liste chainée et, creer une liste imbriquée (en s'appelant) chaque fois qu' il y a besoin (existence de suite dans le parcours du pion).

Tu auras certainement besoin d'autres algorithmes recursifs pour exploiter les données ainsi stockées.

Bon courage.

(ps : si tu n'es pas fixé sur le langage, ce serait plus facile en python ou en perl ... les listes font partie intégrante de ces langages).
0
Merci, je n'avais pas pensé aux listes chaînées ;-)

(et pour le langage c'est du C mais ces listes sont assez bien expliquées sur ce site cliste )
0