Le prb de huit dames

Bonjour,
cas urgent
si quelqu'un a une solution pour ce prb j'espére bi1 q'il m'aide
ecrire un algo permet d'afficher les positions et le nbre de solutions pour le prb de huit dames
Configuration: Windows XP
Firefox 3.0.8

2 réponses

  1. J'est dja lu 7 question, il n'y a pa tré lontan... é je ferè la même réponse.
    Va sur Web, le pb é dja tréT.
    a+
    0
    1. program huit_dames;
      uses wincrt;

      type
      tab1 = array[1..4] of integer;
      tab2 = array[1..4] of boolean;
      tab3 = array[1..7] of boolean;

      var
      ligne:tab1;
      colonne:tab2;
      diag_g,diag_d:tab3;
      trouve:boolean;

      procedure init(var col:tab2;var dg,dd:tab3);
      var
      i:integer;
      begin
      write('Dame de 4 :');readln;
      for i:= 1 to 4 do
      col[i]:=true;

      for i:= 1 to 7 do
      begin
      dg[i]:=true;
      dd[i]:=true;
      end;
      end;

      procedure placer_dame(var trouve:boolean;num_lig:integer;var ligne:tab1;var col:tab2;var dg,dd:tab3);
      var
      c:integer;

      begin
      c:=0;
      repeat
      c:=c+1;
      if (col[c]=true) and (dg[num_lig + c -1] = true) and (dd[num_lig - c +4] = true) then
      begin
      ligne[num_lig]:=c;
      col[c]:=false;
      dg[num_lig + c -1]:=false;
      dd[num_lig - c +4]:=false;

      if num_lig < 4 then
      placer_dame(trouve,num_lig+1,ligne,col,dg,dd)
      else trouve := true;

      col[c]:=true;
      dg[num_lig + c -1]:=true;
      dd[num_lig - c +4]:=true;
      end;
      until (trouve = true) or ( c = 4);
      end;

      procedure affichage(linge : tab1);
      var
      i,j:integer;
      begin
      clrscr;

      writeln('--------- ');
      for i := 1 to 4 do
      begin

      write('|');
      for j := 1 to 4 do
      begin

      if ligne[i]=j then write('*|')
      else write(' |');

      end;writeln;
      end;

      end;

      BEGIN
      init(colonne,diag_g,diag_d);
      trouve:=false;
      placer_dame(trouve,1,ligne,colonne,diag_g,diag_d);
      if trouve then affichage(ligne);
      END.

      POUR n = 4
      pour huit modifier 4 par 8 et 7 par 15= 2*n-1
      0