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:=1 to n do write(ihor[i],' '); writeln; end; procedure find_all(i: integer); var j: integer; begin if i<=n then begin for j:=1 to n do if d_hod(i,j) then begin hod(i,j); find_all(i+1); o_hod(i,j); end; end else begin 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.