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

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

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

> Кратчайшая цепочка домино, (и снова домино только с вариацией - максимальное число оставшихся)
volsub
сообщение 22.12.2007 12:45
Сообщение #1





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

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


Доброе утро!

Любимая сестра попросила помочь с программами к сессии. Но вот не задача, я последние 5 лет вообще не писал ничего. sad.gif Поэтому я несколько в шоке от того, что преподают на первом курсе! blink.gif

===================================
Задание:
Костяшки N домино (N максимальное кол-во очков на половинке костяшки, обычно 6) по правилам этой игры выкладываются в прямую цепочку, начиная с выбранной произвольной костяшки, в оба конца до тех пор, пока это возможно.

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

Результат:
Вывести вариант на экран.
===================================

Поиск использовал, нашел тему в форуме: "задача про домино, поиск наибольшей замыкающейся последовательности" (ссылку увы привести не могу) :-(

Скопировал исходник, создал файл со своими данными. Но судя по всему, я несколько не понимаю сам принцип работы данного кода. Или данные не корректным образом отдаю программе.

Ткните носом, куда стоит копать? blink.gif

Сообщение отредактировано: volsub - 22.12.2007 12:46


Прикрепленные файлы
Прикрепленный файл  dm2.txt ( 142 байт ) Кол-во скачиваний: 227
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 23.12.2007 15:19
Сообщение #2


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

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

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


Вот, решение с рекурсией (читай: полным перебором). Вроде, работает, но стопроцентной уверенности, если честно, нету (думал, решу за пять минут, но вышло несколько побольше, и на доводку меня не хватило)..
Смешно, но самым сложным было вывести полученную цепочку smile.gif.
{ Домино, рыба с минимальной суммой очков }
{ by Lapp }
const
n=8; {размерность домино}

var
d,Fish: array[1..n,1..n]of integer;
Right,Left,m,mx,xx,i,j,k,l: integer;
s,sl,sr: string;

function Put(l,r:integer):boolean;
var
i,j,x,R0,L0: integer;
f: boolean;
begin
if d[l,r]=0 then begin
Inc(m);
R0:=Right;
L0:=Left;
if r=Left then Left:=l else Right:=r;
if Left=0 then Left:=l;
d[l,r]:=-1;
d[r,l]:=m;
f:=true;
for i:=1 to n do f:=f and Put(i,Left);
for i:=1 to n do f:=f and Put(Right,i);
if f then begin
x:=0;
for i:=1 to n do for j:=1 to n do if d[i,j]=0 then x:=x+i+j;
if x>xx then begin
Fish:=d;
xx:=x;
mx:=m
end
end;
d[l,r]:=0;
d[r,l]:=0;
Right:=R0;
Left:=L0;
Dec(m);
Put:=false
end
else Put:=true
end;

begin
xx:=0;
m:=0;
for i:=1 to n do for j:=1 to n do d[i,j]:=0;
Left:=0;
Right:=0;
Put(2,3); { <<== Здесь задается первый ход }

for i:=1 to n do begin
for j:=1 to n do Write(Fish[i,j]:3);
WriteLn
end;
m:=1;
s:='';
for k:=1 to mx do
for i:=1 to n do begin
for j:=1 to n do if Fish[i,j]=m then begin
Str(i,sl);
Str(j,sr);
if j=l then Insert(sl+':'+sr+' ',s,1) else s:=s+' '+sl+':'+sr;
l:=i;
Inc(m)
end
end;
WriteLn(s);
ReadLn
end.


Сообщение отредактировано: Lapp - 23.12.2007 15:22


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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