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

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> задача про домино, поиск наибольшей замыкающейся последовательности
сообщение
Сообщение #1


Гость






Здравствуйте.
Поставили перед нами такую задачe. Дано n кубиков домино, как известно они имеют номера с двух сторон, но в задаче сказано, что для данного случая они не ограничены цифрой 6, т.е. значения с обеих сторон могут быть боле 6, например 16 и 12 и т.п. (какие - то разумные пределы конечно есть, но просто больше чем в настоящих, т.е. чем 6). Задние состоит в том, чтобы найти самую длинную замкнутую цепочку.... Если честно теряюсь в догадках и по вопросу алгоритма и по вопросу реализации....
Надеюсь на Вашу помощь.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну, поскольку ты не написал, на каком языке тебе нужно решение - вот так программа выглядит на Паскале (если костяшек больше 28, измени MAX)...
{$M $C000,0,650000}
const
max = 28;
yes : boolean = false;

max_num = 20; { <--- Максимальное число на костяшке домино !!! }

var
m :array [0..max_num,0..max_num] of boolean;
n :byte;
cep,best :array [1..max*2] of byte;
p,maxlen :integer;

procedure ReadData;
var i,a,b : byte;
begin
p:=1; maxlen:=0;
assign(input,'dm.txt'); reset(input);
fillchar(cep,sizeof(cep),0);
fillchar(m,sizeof(m),false);
readln(n);
for i:=1 to n do begin
readln(a,b);
m[a,b]:=true; m[b,a]:=true;
end;
close(input);
end;

procedure WriteResults;
var i : integer;
begin
writeln(maxlen div 2);
if (maxlen>1) then begin
i:=1;
while (i<pred(maxlen)) do begin
write(' <', best[i], ' ', best[i+1],'> :');
inc(i,2);
end;
write(' <', best[pred(maxlen)], ' ', best[maxlen], '>');
end;
writeln;
end;

procedure s_cep;
begin
if (p-1>maxlen) then begin
move(cep,best,p-1);
maxlen:=p-1;
yes:=(maxlen div 2=n);
end;
end;

function exist(k:integer):boolean;
var i : integer;
begin
i:=0; while (i<=max_num) and not(m[k,i]) do inc(i);
exist:=(i<=max_num);
end;

procedure make_cep(f:integer);
var s:integer;
begin
if yes then exit;
if (m[f,f]) then begin
m[f,f]:=false;
cep[p]:=f; cep[succ(p)]:=f; inc(p,2);
if exist(f) then make_cep(f) else s_cep;
dec(p,2);
m[f,f]:=true;
end else
for s:=0 to max_num do
if (m[f,s]) then begin
m[f,s]:=false; m[s,f]:=false;
cep[p]:=f; cep[succ(p)]:=s; inc(p,2);
if exist(s) then make_cep(s) else s_cep;
dec(p,2);
m[f,s]:=true; m[s,f]:=true;
end;
end;

var i:integer;
begin
ReadData;
for i:=0 to max_num do make_cep(i);
WriteResults;
end.


При исходном файле
Цитата
5
1 2
1 3
2 16
3 6
5 16

Программа вывела результат:
Цитата
5
<5 16> : <16 2> : <2 1> : <1 3> : <3 6>


Тестируй...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Zenon   задача про домино   8.10.2006 12:31
Michael_Rybak   Для перебора может быть полезен критерий: в графе …   8.10.2006 13:49
volvo   Ну, поскольку ты не написал, на каком языке тебе н…   8.10.2006 14:07
Гость   Извини не подскажешь решение этой задачи на Си, а …   8.10.2006 15:26
Nucris   2volvo Понимаешь (ничего, что на ты?) дело в том, …   8.10.2006 16:04
volvo   Что-то в этом духе: #include <stdio.h> #incl…   8.10.2006 17:50
Nucris   Огромнео спасибо, протестирую, но спасибо за это р…   8.10.2006 20:06
volvo   Ну, это во-первых, зависит от твоего компилятора. …   8.10.2006 20:49
Nucris   понятно, да на будущее учту, что точность формулир…   8.10.2006 21:50
Michael_Rybak   Погугли "поиск максимального цикла" ил…   9.10.2006 3:46
Nucris   Понятно, но все равно тебе спасибо Очень прошу vo…   9.10.2006 16:49
Michael_Rybak   Ты может BuildLog запости, не у всех ведь есть VC.   9.10.2006 17:14
volvo   А где, собственно, ты увидел отклонения от чистого…   9.10.2006 17:21
Nucris   Запустил, а этот visual собака ругается и вот это …   9.10.2006 18:35
Michael_Rybak   1>c:\documents and settings\vbproffi…   9.10.2006 19:39
volvo   Ребят, вам шашечки, или ехать? Первая программа ра…   9.10.2006 19:45
Michael_Rybak   Ура! Короче я вот спросил на форуме TopCoder…   10.10.2006 16:09
Nucris   Вышли пожалуйста на lit12@bk.ru   9.10.2006 19:48


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

 





- Текстовая версия 25.04.2024 22:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name