L'algorithme des 8 reines

Contenu du snippet

Un algorithme trés simple à comprendre

Source / Exemple :


/*
pour j allant de 1 . 8 effectuer
 si la case (i,j) est libre et non control,e alors :
 1-occuper cette case
 2-si (i=8), on a trouv, une solution, sinon on remplit la (i+1)-iSme ligne
 3-lib,rer la case (i,j)

  • /
#include<stdlib.h> #include<stdio.h> #include<conio.h> #include<math.h> int x[8]; int compteur=0; void echiquier() {int i,j; printf("\n\n\n"); for(i=0;i<=7;i++) { for(j=0;j<=7;j++) printf("0"); printf("\n"); } } void poser() { int i; clrscr(); compteur++; printf("Voici la solution N=%d\nAppuyer sur une touche pour continuer... Esc pour sortir!!!",compteur); echiquier(); for(i=0;i<=7;i++) { gotoxy(i+1,x[i]+5);printf("X"); } } int libre(int l ,int c) { int i; for(i=0;i<c;i++) if ((x[i]==l)||(abs(x[i]-l)==abs(i-c))) return 0; return 1; } void solution(int n) { int i; if(n==8) { poser(); if(getch()==27) exit(1); } else for(i=0;i<8;i++) if(libre(i,n)) { x[n]=i; solution(n+1); } } void main() { solution(0); }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.