Advertisement
BlueBear

backtracking.pas

Dec 1st, 2013
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.28 KB | None | 0 0
  1. program Pelda26;
  2. uses crt;
  3.  
  4. var lab:array [1..10,1..10] of byte
  5.          = ((9,9,9,9,9,9,9,9,9,9),
  6.             (9,0,0,9,0,9,0,9,0,5),
  7.             (9,0,9,9,0,9,0,9,0,9),
  8.             (9,0,0,0,0,9,0,0,0,9),
  9.             (9,9,0,9,9,9,9,9,0,9),
  10.             (9,0,0,0,0,0,0,9,0,9),
  11.             (9,0,9,9,9,0,9,0,0,9),
  12.             (9,0,0,0,9,0,0,0,9,9),
  13.             (9,0,9,0,9,0,9,0,0,9),
  14.             (9,0,9,9,9,9,9,9,9,9));
  15.  
  16. procedure kiiras;
  17. var i,j:integer;
  18. begin
  19.  for i:=1 to 10 do
  20.   begin
  21.    for j:=1 to 10 do
  22.     case lab[i,j] of
  23.      9: begin {fal}
  24.         textcolor(lightgray);
  25.         write(#219); { #219 = befestett
  26.                       negyzet karakter }
  27.         end;
  28.    0,5: write(' '); { ures vagy celpont }
  29.      1: begin { helyes utvonal }
  30.         textcolor(lightgreen);
  31.         write('X');
  32.         end;
  33.      2: begin { bejart, de rossz utvonal }
  34.         textcolor(red);
  35.         write('O');
  36.         end;
  37.     end;
  38.    writeln;
  39.   end;
  40.  writeln;
  41. end;
  42.  
  43. procedure lepes(x,y:integer);
  44. begin
  45.  { nem ertunk be a celba? }
  46.  if lab[x,y]<>5 then
  47.   begin
  48.    { lepes elore... }
  49.    lab[x,y]:=1;
  50.    { van felfele bejaratlan utvonal (ures vagy celpont)? }
  51.    if (x>1) and (lab[x-1,y] in [0,5]) then lepes(x-1,y);
  52.    { van jobbra bejaratlan utvonal (ures vagy celpont)? }
  53.    if (y<10) and (lab[x,y+1] in [0,5]) then lepes(x,y+1);
  54.    { van balra bejaratlan utvonal (ures vagy celpont)? }
  55.    if (y>1) and (lab[x,y-1] in [0,5]) then lepes(x,y-1);
  56.    { van lefele bejaratlan utvonal (ures vagy celpont)? }
  57.    if (x<10) and (lab[x+1,y] in [0,5]) then lepes(x+1,y);
  58.    { lepes vissza...
  59.    megjeloles bejart, de rossz utvonalnak }
  60.    lab[x,y]:=2;
  61.   end
  62.  else
  63.   begin
  64.    { celba ertunk, utolso lepes elore... }
  65.    lab[x,y]:=1;
  66.    { megtalalt utvonal kirajzolasa }
  67.    kiiras;
  68.    { utolso lepes vissza }
  69.    lab[x,y]:=2;
  70.   end;
  71. end;
  72.  
  73. begin
  74.  clrscr;
  75.  { ures labirintus kirajzolasa }
  76.  kiiras;
  77.  { megoldas keresese,
  78.  elso lepes: [10,2] }
  79.  lepes(10,2);
  80.  { magyarazat kiirasa }
  81.  textcolor(lightgray);
  82.  writeln(#219,' ... fal');
  83.  textcolor(red);
  84.  write('O');
  85.  textcolor(lightgray);
  86.  writeln(' ... bejart, de rossz utvonal');
  87.  textcolor(lightgreen);
  88.  write('X');
  89.  textcolor(lightgray);
  90.  write(' ... helyes utvonal');
  91.  { varakozas egy billentyu megnyomasara }
  92.  readkey;
  93. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement