Разместить на шахматной доске 8 тур так, чтобы они не угрожали друг другу

Maxim2331

задача на двумерный масив и рекурсииПомогите написать программу:Разместить на шахматной доске 8 тур так, чтобы они не угрожали друг другу. Найти все возможные размещения.
1 ответ

Maxim2331

На Pabc.NET время перебора всех вариантов составило:
Всего выриантов: 40320 Затраченное время: 10 минут 28сек
Var
  n                       : Longint;
  i1,i2,i3,i4,i5,i6,i7,i8 : Byte;
 
Function ShowStr(k :Byte) : String;
Var s : String;
Begin
  s:='1';
  While Length(s)<k do s:='0'+s;
  While Length(s)<8 do s:=s+'0';
  ShowStr:=s;
end;
  
Begin
  n:=0;
  For i1:=0 to 7 do
   For i2:=0 to 7 do
    For i3:=0 to 7 do
     For i4:=0 to 7 do
      For i5:=0 to 7 do
       For i6:=0 to 7 do
        For i7:=0 to 7 do
         For i8:=0 to 7 do
           If ((1 shl i1) or (1 shl i2) or (1 shl i3) or (1 shl i4) or (1 shl i5) or (1 shl i6) or (1 shl i7) or (1 shl i8))=255  then
           Begin
             Writeln(ShowStr(i1+1));
             Writeln(ShowStr(i2+1));
             Writeln(ShowStr(i3+1));
             Writeln(ShowStr(i4+1));
             Writeln(ShowStr(i5+1));
             Writeln(ShowStr(i6+1));
             Writeln(ShowStr(i7+1));
             Writeln(ShowStr(i8+1));
             Writeln;
             Inc(n);
           end;
   Writeln('Всего выриантов: ',n);
   Writeln('Затраченное время: ',Milliseconds div 1000 div 60,' минут ',Milliseconds div 1000 mod 60,'сек');
end.
В консольном режиме (запустить EXE-шник) быстрее:
Всего выриантов: 40320 Затраченное время: 0 минут 16сек
Правда в простом ABC экзешник не сделать ))