IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задача махараджей обратным методом
maksimla
сообщение 14.03.2009 14:17
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +



7 задача blink.gif
Махараджа - это ферзя и коня свойство в одной фигуре.На картинке показано этой фигуры ходы.
Прикрепленное изображение
Напишите программу которая нашла несколькими способами N×N в такой доске размера, чтобы каждая махараджа не угрожала.

Первичные данные записаны в файле duom.txt В единственной строчке записаны два натуральных числа отделены пробелом N и K (K ≤ N ≤ 10).

Результат способов число записывается в файл rez.txt.
первичные данные
4 2
результат
20
дополнительно напишите 7 заданиям генираторы

Я даже непонел почему тут результат 20 и как решить ту безпонятие я .

Сообщение отредактировано: maksimla - 15.03.2009 10:03


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 15.03.2009 1:57
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


М
Максим, при всем мом уважении к твоему желанию приобрести знания, я должен тебе заметить, что Правила (раздела Задачи) существуют для всех. Цитирую п.6: "Одна тема - один вопрос (задача)". Пожалуйста, раздели тему.



По поводу последней задачи (№7).
Я так понимаю, что задача состоит в том, чтобы найти, сколькими способами можно расставить К фигур (в данном случае - махараджей) на доске NxN, чтобы они не угрожали (не били) друг другу (друга). Подобная задача - но про ферзей - решалась уже на Форуме (в той же теме, что и про рюкзак: Переборные Алгоритмы ). Я думаю, ее можно немного изменить, чтобы она годилась для махарджей.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 15.03.2009 10:04
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


все исправил я сейчас другие темы сделаю.
а почему результат тут в примере 20 не понел я может обьесните?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.03.2009 19:14
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

Репутация: -  1  +


да что такое со мной тут надо было только подставить и все и то чего то плохо результат не выводит и только одно считает
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.


Сообщение отредактировано: maksimla - 20.03.2009 19:14


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 7:44
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"