Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 15:02   #11
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

код для матрицы 3 на 3 написан "быдлокодером"
посмотри в lurkmor'e кто это
честно прямо подходит это понятие!
lebron можешь написать реализацию алгоритма, который ты описал?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 15.11.2009, 15:03   #12
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Давайте не будем ерундой заниматься Оставим все как есть, на уровне БФС Если все так уж плохо, то вечером может сяду и напишу исходничек А пока поищу в Вашем решении массив-очередь, без которого я себе решение этой задачи просто не представляю.

Цитата:
Сообщение от Rusl92 Посмотреть сообщение
код для матрицы 3 на 3 написан "быдлокодером"
посмотри в lurkmor'e кто это
честно прямо подходит это понятие!
lebron можешь написать реализацию алгоритма, который ты описал?
Если честно, то нету желания. Но утешу, сейчас поищу такое в исходниках сделанных мною задач, должно быть. Подождите минут 10-15.
З.Ы. Время вышло. Конкретно такого исходника не нашел, так что решил написать с ноля. Протестил - работает. При желании то же можно прописать и ДФСом, я использовал более удобный для меня БФС.
Код:
var input,output:text;a,b,i,j,ans,q,nm:longint;ar,arp:array[0..100,0..100] of longint;stek:array[0..100000,0..2] of longint;
begin
assign(input,'input.txt');reset(input);
assign(output,'output.txt');rewrite(output);
readln(input,a,b);
for i:=1 to a do begin for j:=1 to b do begin read(input,ar[i,j]);end;readln(input);end;
for i:=1 to a do begin
for j:=1 to b do begin
if (ar[i,j]=1) and (arp[i,j]=0)then begin
nm:=1;stek[1,1]:=i;stek[1,2]:=j;q:=1;arp[i,j]:=1;
while (q<=nm) do begin
if (ar[stek[q,1],stek[q,2]+1]=1) and (arp[stek[q,1],stek[q,2]+1]=0) then
begin inc(nm);stek[nm,1]:=stek[q,1];stek[nm,2]:=stek[q,2]+1;arp[stek[nm,1],stek[nm,2]]:=1;end;
if (ar[stek[q,1],stek[q,2]-1]=1) and (arp[stek[q,1],stek[q,2]-1]=0) then
begin inc(nm);stek[nm,1]:=stek[q,1];stek[nm,2]:=stek[q,2]-1;arp[stek[nm,1],stek[nm,2]]:=1;end;
if (ar[stek[q,1]+1,stek[q,2]]=1) and (arp[stek[q,1]+1,stek[q,2]]=0) then
begin inc(nm);stek[nm,1]:=stek[q,1]+1;stek[nm,2]:=stek[q,2];arp[stek[nm,1],stek[nm,2]]:=1;end;
if (ar[stek[q,1]-1,stek[q,2]]=1) and (arp[stek[q,1]-1,stek[q,2]]=0) then
begin inc(nm);stek[nm,1]:=stek[q,1]-1;stek[nm,2]:=stek[q,2];arp[stek[nm,1],stek[nm,2]]:=1;end;
inc(q);
end;
if nm>ans then ans:=nm;
end;
end;end;
writeln(output,ans);
close(input);close(output);
end.

Последний раз редактировалось LeBron; 15.11.2009 в 15:27.
LeBron вне форума Ответить с цитированием
Старый 15.11.2009, 16:20   #13
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

LeBron,у меня нет стека и очереди.Алгоритм простой:
1)Нашли единицу,kol-vo=1;
2)И отталкиваясь от неё пошли искать единицу в соседних элементах(поэтому так много if,чтобы не выйти за пределы массива);
3)Если нашли увеличиваем kolvo сохранили индексы предыдущей 1(в pm и pn),чтобы назад не вернуться, и опять ищем.И так пока уткнёмся.
4)Вышли в основной цикл...
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 15.11.2009 в 16:35.
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивом GaSST Microsoft Office Excel 5 04.06.2009 07:57
Найти максимальный элемент матрицы и вставить правее него столбец из нулей и ниже него строку из нулей. Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 3 28.11.2008 11:28
Получите последовательность b1...bn из нулей и единиц Я_Студент Паскаль, Turbo Pascal, PascalABC.NET 2 04.07.2008 12:40
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40