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

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

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

> прохождение лабиринта с помощью рекурсии, бинарная матрица
Positiv
сообщение 22.03.2007 13:58
Сообщение #1


Гость






Доброго времени суток !!


Народ , помогите пожалуйста , нужно сделать программу :
дана двоичная матрица из 0 и 1 , в рандомной позиции появлятся человечек , которому нужно выйти в правый нижний угол , идти он может только по тем цифрам , на котрой сначала появился (то есть если появился на 1 то только по еденицам). Если выхода нет то нужно вывести на экран что нет выхода . матрица задается рандомно.
Программа должна быть сделана при помощи рекурсии .



Заранее спасибо.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
St@senk@
сообщение 24.03.2007 10:57
Сообщение #2


Новичок
*

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

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


Чтобы Ввы мне поверили, то вот реализация моего алгоритма.
Delphi

program Project2;

{$APPTYPE CONSOLE}

const n = 5;
var lab : array [1..n,1..n] of integer;
var labb : array [1..n,1..n] of boolean;
var x,y : integer;

function Step : boolean;
var res : boolean;
begin
res:=false;
if (x=n) and (y=n) then
res:=true
else begin
if not(labb[x,y]) then begin
labb[x,y]:=true;
if (y>1) and (lab[x,y-1]=lab[x,y]) then begin
dec(y);
res:=res or step;
inc(y);
end;
if (y<n) and (lab[x,y+1]=lab[x,y]) then begin
inc(y);
res:=res or step;
dec(y);
end;
if (x>1) and (lab[x-1,y]=lab[x,y]) then begin
dec(x);
res:=res or step;
inc(x);
end;
if (x<n) and (lab[x+1,y]=lab[x,y]) then begin
inc(x);
res:=res or step;
dec(x);
end;
end;
end;
step:=res;
end;

var i,j : integer;
begin
for i:= 1 to n do begin
for j:= 1 to n do begin
lab[j,i]:=random(2);
write(lab[j,i]);
labb[j,i]:=false;
end;
writeln;
end;
readln(x,y);
write(step);
readln;
end.


Pascal

program Project2;
uses crt;
const n = 5;
var lab : array [1..n,1..n] of integer;
var labb : array [1..n,1..n] of boolean;
var x,y : integer;

function Step : boolean;
var res : boolean;
begin
res:=false;
if (x=n) and (y=n) then
res:=true
else begin
if not(labb[x,y]) then begin
labb[x,y]:=true;
if (y>1) and (lab[x,y-1]=lab[x,y]) then begin
dec(y);
res:=res or step;
inc(y);
end;
if (y<n) and (lab[x,y+1]=lab[x,y]) then begin
inc(y);
res:=res or step;
dec(y);
end;
if (x>1) and (lab[x-1,y]=lab[x,y]) then begin
dec(x);
res:=res or step;
inc(x);
end;
if (x<n) and (lab[x+1,y]=lab[x,y]) then begin
inc(x);
res:=res or step;
dec(x);
end;
end;
end;
step:=res;
end;

var i,j : integer;
begin
for i:= 1 to n do begin
for j:= 1 to n do begin
lab[j,i]:=random(2);
write(lab[j,i]);
labb[j,i]:=false;
end;
writeln;
end;
readln(x,y);
write(step);
readln;
end.



Добавлено через 55 сек.
Lapp, извини, твоего сообщения не видел.


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

Сообщений в этой теме
Positiv   прохождение лабиринта с помощью рекурсии   22.03.2007 13:58
hiv   Народ , помогите пожалуйста , нужно сделать програ...   22.03.2007 14:19
positiv   мне надо сама процедура поиска пути , хелп   22.03.2007 20:06
St@senk@   Ну смотри. псевдокод функция шаг(х,у) булен начало...   22.03.2007 21:02
hiv   отметим, что в этой точке мы были. если х=0 или у=...   23.03.2007 9:27
Алена   FAQ -> Переборные алгоритмы (чуть-чуть подкорре...   23.03.2007 2:06
St@senk@   ну тогда, алгоритм, который проходит через все дос...   23.03.2007 12:16
Positiv   человек может ходить только по горизонтали или по ...   23.03.2007 13:28
St@senk@   ну тогда мой последний алгоритм должен работать...   23.03.2007 13:57
hiv   ну тогда мой последний алгоритм должен работать......   23.03.2007 18:11
Positiv   а где в этом алгоритме рекурсия ?   23.03.2007 18:41
St@senk@   Hiv, нет, твой алгоритм отличается от моего :) и в...   23.03.2007 20:05
Positiv   объясните плз подробнее , не совсем понятно , по а...   24.03.2007 10:12
Lapp   positv, чем тебя не устроила ссылка Алены? Там все...   24.03.2007 10:40
Positiv   'Lapp' . прога по ссылке алены вообще не...   24.03.2007 22:30
Lapp   'Lapp' . прога по ссылке алены вообще н...   25.03.2007 10:09
Гость   когда запускаешь программу алены , так понимаю над...   25.03.2007 17:28
St@senk@   Чтобы Ввы мне поверили, то вот реализация моего ал...   24.03.2007 10:57
St@senk@   Там нужно сначала ввести матрицу, а потом координа...   25.03.2007 17:29
Positiv   St@senk@ . надо что бы с рекурсией было , а я не ...   25.03.2007 17:39
St@senk@   :) Positiv А она там уже есть :) res:=res o...   25.03.2007 17:57
Гость   'St@senk@' . точняк , че то я туплю дико п...   25.03.2007 18:16


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

 



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