7 задача Махараджа - это ферзя и коня свойство в одной фигуре.На картинке показано этой фигуры ходы. Нажмите для просмотра прикрепленного файла Напишите программу которая нашла несколькими способами N×N в такой доске размера, чтобы каждая махараджа не угрожала.
Первичные данные записаны в файле duom.txt В единственной строчке записаны два натуральных числа отделены пробелом N и K (K ≤ N ≤ 10).
Результат способов число записывается в файл rez.txt. первичные данные 4 2 результат 20 дополнительно напишите 7 заданиям генираторы
Я даже непонел почему тут результат 20 и как решить ту безпонятие я .
Lapp
15.03.2009 5:57
М
Максим, при всем мом уважении к твоему желанию приобрести знания, я должен тебе заметить, что Правила (раздела Задачи) существуют для всех. Цитирую п.6: "Одна тема - один вопрос (задача)". Пожалуйста, раздели тему.
По поводу последней задачи (№7). Я так понимаю, что задача состоит в том, чтобы найти, сколькими способами можно расставить К фигур (в данном случае - махараджей) на доске NxN, чтобы они не угрожали (не били) друг другу (друга). Подобная задача - но про ферзей - решалась уже на Форуме (в той же теме, что и про рюкзак: Переборные Алгоритмы ). Я думаю, ее можно немного изменить, чтобы она годилась для махарджей.
maksimla
15.03.2009 14:04
все исправил я сейчас другие темы сделаю. а почему результат тут в примере 20 не понел я может обьесните?
maksimla
20.03.2009 23:14
да что такое со мной тут надо было только подставить и все и то чего то плохо результат не выводит и только одно считает
var{ признак занятости диагоналей первого типа }
up: array[2 .. 16] of boolean;
{ признак занятости диагоналей второго типа }
down: array[-7 .. 7] of boolean;
{ признак занятости вертикали }
vert: array[1 .. 8]of boolean;
{ номер вертикали, на которой стоит ферзь на каждой горизонтали }
ihor: array[1 .. 8]of integer;
n,i,s: integer;
t,z:text;
{ проверка на допустимость хода в позицию (i,j) }function d_hod(i, j: integer): boolean;
begin
d_hod := vert[j] and up[i+j] and down[i-j];
end;
procedure hod(i, j: integer); { сделать ход }begin
ihor[i] := j;
vert[j] := false;
up[i+j] := false;
down[i-j] := false;
end;
procedure o_hod(i, j: integer); { отменить ход }begin
vert[j] := true;
up[i+j] := true;
down[i-j] := true;
end;
procedure print;
var i: integer;
begin
write(' ',s,' ');for i:=1to n do write(ihor[i],' ');
writeln;
end;
procedure find_all(i: integer);
var j: integer;
beginif i<=n thenbeginfor j:=1to n doif d_hod(i,j) thenbegin
hod(i,j);
find_all(i+1);
o_hod(i,j);
end;
endelsebegin
inc(s);
print;
end;
end;
begin
assign (t, 'duom.TXT');
assign (z, 'rez.TXT');
reset (t);
rewrite(z);
readln(t,n,i);
find_all(i);
readln;
close(z);
close(t);
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.