Le prb de huit dames

fatouna1 -  
 info -
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. loupius
     
    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
  2. info
     
    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