close

Вход

Забыли?

вход по аккаунту

?

Отчет лаба 4

код для вставкиСкачать
Лабораторная работа № 7
Алгоритмы метода перебора
с возвратами - (МПВ), "жадные" алгоритмы.
Цель работы: Изучение алгоритмов метода поиска с возвратами на примерах реализации шахматных задач и задачи динамического программирования. Освоение "жадных" алгоритмов- точного и приближенного.
Код процедуры TForm1.Button1Click(Sender: TObject):
type
arr=array[1..8] of integer;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:arr;
c:integer;
f:textfile;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 8 do stringgrid1.Cells[i,0]:=inttostr(i);
for i:=1 to 8 do stringgrid1.Cells[0,i]:=inttostr(9-i);
AssignFile(f,'f.txt');
rewrite(f);
writeln(f,'Расмещение 8 ферзей на шахматной доске в "безопасном" режиме');
c:=0;
back(1);
edit1.Text:=inttostr(c);
closefile(f);
end;
Блок-схема процедуры TForm1.Button1Click(Sender: TObject):
Код процедуры back(k:integer):
procedure back(k:integer);
var i,j,y:integer;
begin
for y:=1 to 8 do if search(a,k,y) then
begin
a[k]:=y;
if k=8 then
begin
inc(c);
if c=1 then for i:=1 to 8 do
begin
j:=a[i];
form1.StringGrid1.cells[i,9-j]:=' Ф';
end;
write(f,'Решение номер '+inttostr(c));
for i:=1 to 8 do write(f,' ('+inttostr(i)+' , '+ inttostr(a[i])+') ');
write(f,#13);
end;
back(k+1);
end;
end;
Блок-схема процедуры back(k:integer):
Код функции search(var a:arr; k,y:Integer):Boolean:
function search(var a:arr; k,y:Integer):Boolean;
var i:integer;
begin
i:=1;
while (i<k) and (y<>a[i]) and (Abs(k-i)<>Abs(y-a[i])) do Inc(i);
search:=i=k;
end;
Блок-схема функции search(var a:arr; k,y:Integer):Boolean:
Скриншот работающей программы:
Документ
Категория
Рефераты
Просмотров
14
Размер файла
230 Кб
Теги
лаба, отчет
1/--страниц
Пожаловаться на содержимое документа