Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

восемь ферзей

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> восемь ферзей
Имя
Сообщение << Старые топики   Новые топики >>
восемь ферзей - 2006-10-22 16:54:14.696666   
NGP

Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
Знаю,что глупая просьба,но все же. Помогите решить задачу о восьми ферзях на msvc++, нормального решения в инете я не нашел,нужно тока,чтобы она все возможные варианты сразу выводила в консоль. Если кто возьмется,пишите комменты,плиииз!
Post #: 1
RE: восемь ферзей - 2006-10-22 18:33:58.100000   
nixo

Сообщений: 213
Оценки: 0
Присоединился: 2006-06-25 20:22:26
это читал ? http://algolist.manual.ru/maths/combinat/queens.php
Post #: 2
RE: восемь ферзей - 2006-10-22 19:37:06.663333   
NGP

Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
type Index=1..N;
Rasstanovka=array [Index] of 0..N;

как это на с++ перевести???
Post #: 3
RE: восемь ферзей - 2006-10-23 00:29:10.413333   
Freackazoid

Сообщений: 47
Оценки: 0
Присоединился: 2006-04-30 23:39:27
int *Rasstanovaka=new int[N];
 
По крайней мере мне так кажеться, неплохобы поподробнее
Post #: 4
RE: восемь ферзей - 2006-10-23 10:18:25.446666   
NGP

Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
вот подробнее,все остальное я сам смогу перевести,мне именно кусок с type надо
program Queens;
const N=8;
type Index=1..N;
Rasstanovka=array [Index] of 0..N;
var X:Rasstanovka;
Count:word;
function P(var X:Rasstanovka;k,y:Index):boolean;
var i:Index;
begin
i:=1;
while (i<k)and(y<>X)and(abs(k-i)&lt;&gt;abs(y-X)) do inc(i);
P:=i=k
end;
procedure Backtracking(k:Index);
var i,y:Index;
begin
for y:=1 to N do
if P(X,k,y) then
begin
X[k]:=y;
if k=N then
begin
for i:=1 to N do write(X);writeln;inc(Count)
end;
Backtracking(k+1)
end
end;
begin
Count:=0;
writeln('Расстановки ',N,' ферзей:');
Backtracking(1);
writeln('Всего ',Count,' расстановок')
end.
Post #: 5
RE: восемь ферзей - 2006-10-24 00:31:41.523333   
H@ns

Сообщений: 52
Оценки: 0
Присоединился: 2005-12-09 00:54:03
У меня есть прога, только на Borland Pascal 7.0. В графическом варианте выводит все расстановки.
Post #: 6
RE: восемь ферзей - 2006-10-24 17:39:10.240000   
alexbozhko

Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
#include &lt;iostream&gt;

const int N = 8;
unsigned int count = 0;
int x[N] = { 0 };

bool p(int x[], int k, int y)
{
int i = 0;
while(i &lt; k &amp;&amp; y != x &amp;&amp; abs(k - i) != abs(y - x))
++i;
return i == k;
}

void back_tracking(int k)
{
for(int y = 0; y &lt; N; ++y)
{
if(p(x, k, y))
{
x[k] = y;
if(k == N - 1)
{
for(int i = 0; i &lt; N; ++i)
{
std::cout &lt;&lt; x + 1;
}
std::cout &lt;&lt; std::endl;
++count;
}
back_tracking(k + 1);
}
}
}

int main()
{
std::cout &lt;&lt; N &lt;&lt; " queens arrangement:" &lt;&lt; std::endl;
back_tracking(0);
std::cout &lt;&lt; "Total " &lt;&lt; count &lt;&lt; " arrangements" &lt;&lt; std::endl;
std::cin.get();
}
Post #: 7
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> восемь ферзей







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.