Мое решение такое:
Код
Program lab;
uses crt;
var mas:array[1..8,1..8] of integer;
i,j:integer;
v:byte;
procedure pg;
var e:integer;
begin
gotoxy(15,4);
write(#201);
for e:=1 to 51 do write(#205);
writeln(#187);
for e:=1 to 17 do
begin
gotoxy(15,wherey);
write(#186);
gotoxy(67,wherey);
writeln(#186);
end;
gotoxy(15,wherey);
write(#200);
for e:=1 to 51 do write(#205);
writeln(#188);
end;
procedure a(y:integer;x:integer;n:byte);
var i,j:integer;
begin
if (x+1>0) and (x+1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x+1]=0)
then
begin
mas[y-2,x+1]:=n;
a(y-2,x+1,n+1);
mas[y-2,x+1]:=0;
end;
if (x+2>0) and (x+2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x+2]=0)
then
begin
mas[y-1,x+2]:=n;
a(y-1,x+2,n+1);
mas[y-1,x+2]:=0;
end;
if (x+2>0) and (x+2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x+2]=0)
then
begin
mas[y+1,x+2]:=n;
a(y+1,x+2,n+1);
mas[y+1,x+2]:=0;
end;
if (x+1>0) and (x+1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x+1]=0)
then
begin
mas[y+2,x+1]:=n;
a(y+2,x+1,n+1);
mas[y+2,x+1]:=0;
end;
if (x-1>0) and (x-1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x-1]=0)
then
begin
mas[y+2,x-1]:=n;
a(y+2,x-1,n+1);
mas[y+2,x-1]:=0;
end;
if (x-2>0) and (x-2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x-2]=0)
then
begin
mas[y+1,x-2]:=n;
a(y+1,x-2,n+1);
mas[y+1,x-2]:=0;
end;
if (x-2>0) and (x-2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x-2]=0)
then
begin
mas[y-1,x-2]:=n;
a(y-1,x-2,n+1);
mas[y-1,x-2]:=0;
end;
if (x-1>0) and (x-1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x-1]=0)
then
begin
mas[y-2,x-1]:=n;
a(y-2,x-1,n+1);
mas[y-2,x-1]:=0;
end;
if n=65 then
begin
repeat
clrscr;
pg;
gotoxy(17,5);
write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:');
gotoxy(17,7);
write('1:','„«п ўлў®¤ १г«мв в ':47);
gotoxy(17,9);
write('2:','„«п ўл室 ':47);
gotoxy(17,11);
write('‚ў®¤->: ');
{$I-}
readln(v);
{$I+}
if IOResult<>0 then begin
clrscr;
writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо');
writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter');
readln;
end
else begin
case v of
1:begin
clrscr;
writeln('ђҐ§г«мв в');
writeln('=======================');
for i:=1 to 8 do
begin
for j:=1 to 8 do write(mas[i,j]:2,' ');
writeln;
end;
writeln('=======================');
readln;
clrscr;
end;
2: halt;
end;
end;
until IOResult<>0;
end;
end;
begin
fillchar(mas,sizeof(mas),0);
repeat
clrscr;
pg;
gotoxy(17,5);
write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:');
gotoxy(17,7);
write('1:','„«п агз®Ј® ўў®¤ з «мле Є®®а¤Ё в':47);
gotoxy(17,9);
write('2:','„«п ўв®¬ вЁзҐбЄ®Ј® § ¤ Ёп Є®®а¤Ё в':47);
gotoxy(17,11);
write('3:','„«п ўл室 ':47);
gotoxy(17,13);
write('‚ў®¤->: ');
{$I-}
readln(v);
{$I+}
if IOResult<>0 then begin
clrscr;
writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо');
writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter');
readln;
end
else begin
case v of
1: begin
clrscr;
writeln('‚ўҐ¤ЁвҐ з «млҐ Є®®а¤Ё вл');
write('y->: ');
readln(i);
write('x->: ');
readln(j);
clrscr;
mas[i,j]:=1;
a(i,j,2);
end;
2: begin
clrscr;
randomize;
i:=random(7)+1;
j:=random(7)+1;
mas[i,j]:=1;
a(i,j,2);
end;
3: exit;
end;
end;
until IOResult<>0;
end.
uses crt;
var mas:array[1..8,1..8] of integer;
i,j:integer;
v:byte;
procedure pg;
var e:integer;
begin
gotoxy(15,4);
write(#201);
for e:=1 to 51 do write(#205);
writeln(#187);
for e:=1 to 17 do
begin
gotoxy(15,wherey);
write(#186);
gotoxy(67,wherey);
writeln(#186);
end;
gotoxy(15,wherey);
write(#200);
for e:=1 to 51 do write(#205);
writeln(#188);
end;
procedure a(y:integer;x:integer;n:byte);
var i,j:integer;
begin
if (x+1>0) and (x+1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x+1]=0)
then
begin
mas[y-2,x+1]:=n;
a(y-2,x+1,n+1);
mas[y-2,x+1]:=0;
end;
if (x+2>0) and (x+2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x+2]=0)
then
begin
mas[y-1,x+2]:=n;
a(y-1,x+2,n+1);
mas[y-1,x+2]:=0;
end;
if (x+2>0) and (x+2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x+2]=0)
then
begin
mas[y+1,x+2]:=n;
a(y+1,x+2,n+1);
mas[y+1,x+2]:=0;
end;
if (x+1>0) and (x+1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x+1]=0)
then
begin
mas[y+2,x+1]:=n;
a(y+2,x+1,n+1);
mas[y+2,x+1]:=0;
end;
if (x-1>0) and (x-1<9) and (y+2>0) and (y+2<9) and (mas[y+2,x-1]=0)
then
begin
mas[y+2,x-1]:=n;
a(y+2,x-1,n+1);
mas[y+2,x-1]:=0;
end;
if (x-2>0) and (x-2<9) and (y+1>0) and (y+1<9) and (mas[y+1,x-2]=0)
then
begin
mas[y+1,x-2]:=n;
a(y+1,x-2,n+1);
mas[y+1,x-2]:=0;
end;
if (x-2>0) and (x-2<9) and (y-1>0) and (y-1<9) and (mas[y-1,x-2]=0)
then
begin
mas[y-1,x-2]:=n;
a(y-1,x-2,n+1);
mas[y-1,x-2]:=0;
end;
if (x-1>0) and (x-1<9) and (y-2>0) and (y-2<9) and (mas[y-2,x-1]=0)
then
begin
mas[y-2,x-1]:=n;
a(y-2,x-1,n+1);
mas[y-2,x-1]:=0;
end;
if n=65 then
begin
repeat
clrscr;
pg;
gotoxy(17,5);
write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:');
gotoxy(17,7);
write('1:','„«п ўлў®¤ १г«мв в ':47);
gotoxy(17,9);
write('2:','„«п ўл室 ':47);
gotoxy(17,11);
write('‚ў®¤->: ');
{$I-}
readln(v);
{$I+}
if IOResult<>0 then begin
clrscr;
writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо');
writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter');
readln;
end
else begin
case v of
1:begin
clrscr;
writeln('ђҐ§г«мв в');
writeln('=======================');
for i:=1 to 8 do
begin
for j:=1 to 8 do write(mas[i,j]:2,' ');
writeln;
end;
writeln('=======================');
readln;
clrscr;
end;
2: halt;
end;
end;
until IOResult<>0;
end;
end;
begin
fillchar(mas,sizeof(mas),0);
repeat
clrscr;
pg;
gotoxy(17,5);
write('‚ўҐ¤ЁвҐ ®ЇаҐ«Ґ«сго жЁдаг ¤«п ўлЇ®«ҐЁп Є®¬ ¤л:');
gotoxy(17,7);
write('1:','„«п агз®Ј® ўў®¤ з «мле Є®®а¤Ё в':47);
gotoxy(17,9);
write('2:','„«п ўв®¬ вЁзҐбЄ®Ј® § ¤ Ёп Є®®а¤Ё в':47);
gotoxy(17,11);
write('3:','„«п ўл室 ':47);
gotoxy(17,13);
write('‚ў®¤->: ');
{$I-}
readln(v);
{$I+}
if IOResult<>0 then begin
clrscr;
writeln('ЌҐЄ®а४вл© ўў®¤,ўўҐ¤ЁвҐ зЁб«® гЄ § ®Ґ ў ¬Ґо');
writeln('„«п Їа®¤®«¦ҐЁп а Ў®вл ¦¬ЁвҐ Enter');
readln;
end
else begin
case v of
1: begin
clrscr;
writeln('‚ўҐ¤ЁвҐ з «млҐ Є®®а¤Ё вл');
write('y->: ');
readln(i);
write('x->: ');
readln(j);
clrscr;
mas[i,j]:=1;
a(i,j,2);
end;
2: begin
clrscr;
randomize;
i:=random(7)+1;
j:=random(7)+1;
mas[i,j]:=1;
a(i,j,2);
end;
3: exit;
end;
end;
until IOResult<>0;
end.
Нужно оптимизировать код для повышения скорости работы программы.
Тегами [CОDE][/CОDE] пользуйся...