Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Рекурсия открывает все поле

88K
29 марта 2013 года
Jkobs
4 / / 29.03.2013
Код:
uses crt;
const n=10;
r:array[1..8] of integer = (-1,-1,-1, 0,0, 1,1,1);
p:array[1..8] of integer = (-1, 0, 1,-1,1,-1,0,1);
type mas=array[1..n,1..n] of integer;
var i,j,k,m,x,y,b,s,h,o,g,xk,yk,flag,xo,yo,tc:integer;
    f:char;
    a,c:mas;
procedure sum(x,y:integer);
var   xk,yk,i:integer;
begin
o:=0;
xk:=x;
yk:=y;
 for i:=1 to 8 do begin
   if ((xk+r[i] > 0) and (xk+r[i]<n+1)) and ((yk+p[i] >0) and(yk+p[i]<n+1)) then begin
     if a[xk+r[i],yk+p[i]]=-1 then begin
      o:=o+1;
     end;
   end;
 end;

if o=0 then a[xk,yk]:=-3
else a[xk,yk]:=o;
end;

Procedure Open( x, y : integer);
begin

 if ((x>0)and(y>0)and(x<=n)and(y<=n)and((a[x,y] =0 ))) then
   begin
    sum(x,y);
    Open(x,y-1);
    Open(x-1,y);
    Open(x,y+1);
    Open(x+1,y);
    //Open(x-1,y-1);
    //Open(x-1,y+1);
    //Open(x+1,y-1);
    //Open(x+1,y+1);
   end
end;
88K
29 марта 2013 года
Jkobs
4 / / 29.03.2013
Всем доброго времени суток.Возникла вот такая пробдемка: рекурсия открывает все поле,прошу помочь решить данную проблему.Заранее спасибо.
Прикрепленные файлы:
2 Кб
Загрузок: 622
88K
30 марта 2013 года
Jkobs
4 / / 29.03.2013
Код:
Procedure Open( x, y : integer);
begin

 if ((x>0)and(y>0)and(x<=n)and(y<=n) and (a[x,y]=0) and (a[x,y]<>-6)) then
   begin
    a[x,y]:=-6;
    c[x,y]:=-6;
    Open(x,y-1);
    Open(x-1,y);
    Open(x,y+1);
    Open(x+1,y);
   end
  else if ((x>0)and(y>0)and(x<=n)and(y<=n) and (a[x,y]>0)) then begin
    c[x,y]:=a[x,y];
  end;
end;
Решено)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог