Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.56 KB | None | 0 0
  1. const
  2.   ikl=64;
  3. type
  4.   pole=record
  5.     x:integer;
  6.     y:integer;
  7.   end;
  8. type
  9.   mas=array[1..ikl]of pole;
  10. Function obx(tek1:pole;proi:mas;sh:integer):boolean;
  11. var
  12.   i:integer;
  13.   tested:boolean;
  14. begin
  15.   tested:=true;
  16.   For i:=1 to sh do
  17.     begin
  18.       if proi[i]=tek1 then
  19.         tested:=false;
  20.     end;
  21.   obx:=tested;
  22. end;
  23. Function shaq(tek,fin:pole;proi:mas;colv,sh:integer):integer;
  24. var
  25.   sum:integer;
  26.   tek1:pole;
  27. begin
  28.   sum:=0;
  29.   if (tek=fin)and(colv=0) then
  30.     sum:=1
  31.   else
  32.   begin
  33.   if colv>0 then
  34.   begin
  35.   proi[sh]:=tek;
  36.   if tek.y +1 <=8 then
  37.     begin
  38.       tek1.x:=tek.x;
  39.       tek1.y:=tek.y+1;
  40.       if obx(tek1,proi,sh) then
  41.         sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  42.     end;
  43.   if tek.y -1 >=1 then
  44.     begin
  45.       tek1.x:=tek.x;
  46.       tek1.y:=tek.y-1;
  47.       if obx(tek1,proi,sh) then
  48.         sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  49.     end;
  50.   if tek.x + 1 <=8 then
  51.     begin
  52.       if tek.y +1<=8 then
  53.         begin
  54.           tek1.x:=tek.x +1;
  55.           tek1.y:=tek.y +1;
  56.           if obx(tek1,proi,sh) then
  57.             sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  58.         end;
  59.       if tek.y -1 >= 1 then
  60.         begin
  61.           tek1.x:=tek.x +1;
  62.           tek1.y:=tek.y -1;
  63.           if obx(tek1,proi,sh) then
  64.             sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  65.         end;
  66.       tek1.x:=tek.x+1;
  67.       tek1.y:=tek.y;
  68.       if obx(tek1,proi,sh) then
  69.         sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  70.     end;
  71.       if tek.x - 1 >=1 then
  72.         begin
  73.           if tek.y +1<=8 then
  74.         begin
  75.           tek1.x:=tek.x -1;
  76.           tek1.y:=tek.y +1;
  77.           if obx(tek1,proi,sh) then
  78.             sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  79.         end;
  80.       if tek.y -1 >= 1 then
  81.         begin
  82.           tek1.x:=tek.x -1;
  83.           tek1.y:=tek.y -1;
  84.           if obx(tek1,proi,sh) then
  85.             sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  86.         end;
  87.       tek1.x:=tek.x-1;
  88.       tek1.y:=tek.y;
  89.       if obx(tek1,proi,sh) then
  90.         sum:=sum+shaq(tek1,fin,proi,colv-1,sh+1);
  91.         end;
  92.    end;
  93.    end;
  94.   shaq:=sum;
  95. end;
  96. var
  97.   proi:mas;
  98.   s,s1,alf:string;
  99.   star,fin:pole;
  100.   colv,colvsha:integer;
  101. begin
  102.   alf:='ABCDEFGH';
  103.   readln(s);
  104.   s1:=copy(s,1,pos(' ',s)-1);
  105.   delete(s,1,pos(' ',s));
  106.   star.x:=pos(copy(s1,1,1),alf);
  107.   star.y:=strtoint(copy(s1,2,1));
  108.   s1:=copy(s,1,pos(' ',s)-1);
  109.   delete(s,1,pos(' ',s));
  110.   fin.x:=pos(copy(s1,1,1),alf);
  111.   fin.y:=strtoint(copy(s1,2,1));
  112.   colv:=strtoint(copy(s,1,1));
  113.   colvsha:=shaq(star,fin,proi,colv,1);
  114.   writeln(colvsha);
  115. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement