uses crt,graph;
var f:text;
yo:boolean;
i,c,p,posx,posy:integer;
a:array[0..19,0..19]of byte;
b:array[0..19,0..19]of boolean;
procedure readfile;
begin
assign(f,'labirint.dat');
reset(f);
read(f,posx);
read(f,posy);
for i:=0 to 19 do
for c:=0 to 19 do
read(f,a[c,i]);
close(f);
end;
procedure draw;
begin
for i:=0 to 19 do
for c:=0 to 19 do
begin
if a[c,i]=1 then p:=10
else if a[c,i]=0 then p:=0
else if a[c,i]=2 then p:=9;
setfillstyle(1,p);
bar(c*15,i*15,c*15+12,i*15+12);
end;
end;
procedure recurs(x,y:byte);
begin
if (x=0)or(x=19)or(y=0)or(y=19)then
begin
yo:=true;
a[x,y]:=2;
b[x,y]:=true;
draw;
end;
if not yo then
begin
a[x,y]:=2;
b[x,y]:=true;
draw;
if (a[x-1,y]=0)and(not b[x-1,y]) then recurs(x-1,y);
if (a[x+1,y]=0)and(not b[x+1,y]) then recurs(x+1,y);
if (a[x,y-1]=0)and(not b[x,y-1]) then recurs(x,y-1);
if (a[x,y+1]=0)and(not b[x,y+1]) then recurs(x,y+1);
a[x,y]:=0;
end;
end;
begin
yo:=false;
readfile;
i:=0;
c:=0;
initgraph(i,c,'c:\bp\bgi');
a[posx,posy]:=2;
draw;
delay(500);
recurs(posx,posy);
if yo then outtextxy(300,100,'путь найден')
else outtextxy(300,100,'путь не найден');
readln;
closegraph;
end.
помогите с программой-pascal
CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)
Цитата:
Originally posted by тельняшка
народ!!помогите!!срочняк нужна программа в pascal
CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)
народ!!помогите!!срочняк нужна программа в pascal
CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)
Почитай про волновой алгоритм.
Цитата:
CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)
Сколько-то лет назад я ради интереса написал такую вещь:
Код:
файл labirint.dat выглядит у меня примерно так:
Код:
9 9
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1
1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1
1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1
1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1
1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1
1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1
1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1
1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1
1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1
1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1
1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1
1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1
1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1
1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1
1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1
1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1
1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1
1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1
1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1
1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1
1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1
1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1
1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1
1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1
1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Только не надо спрашивать меня, зачме тут столько переменных и как оно работает +) Могу сказать только что используется рекурсия.
спасибо огромненькое!!!!даже не знаю как отблагодарить