Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Продолжение приложения Б. if (vert = 1) then y := plan.Width-1⇐ ПредыдущаяСтр 24 из 24 begin if (vert = 1) then y:= plan.Width-1 else x:= 0; while (x < plan.Width) and (y >= 0) { plan.Height) } and (not flag) do begin if (plan.Arr[x,y] <> 0) and (a.Arr[x,y] = 0) then begin a.Arr[x,y]:= val; if (x = x_m) and (vert = 0) then flag:= true; end; if (vert = 1) then dec(y) else inc(x); end; end; procedure Find(var x, y: integer; vert, val: integer); begin if (vert = 1) then y:= 0 else x:= 0; while (x < plan.Width) and (y < plan.Height) do begin if a.Arr[x,y] = val then break; if (vert = 1) then inc(y) else inc(x); end; end; var index, index2, x1, y1: integer; path: array [0..100] of TPoint; begin FillChar(path, sizeof(path), 0); x_m:= -1; y_m:= -1; v_m:= MaxInt; for index:= 0 to plan.Height-1 do Продолжение приложения Б for index2:= 0 to plan.Width-1 do if (potential.Arr[index2,index] < v_m) then begin x_m:= index2; y_m:= index; v_m:= potential.Arr[index2,index]; end; a:= TData.Create; a.AssignLT(plan); a.Arr[x_m,y_m]:= 1; flag:= false; f:= 1; while not flag do begin for index:= 0 to plan.Height-1 do for index2:= 0 to plan.Width-1 do if (a.Arr[index2,index] = f) then begin Line(index2, index, (f+1) and 1, f+1); { Memo1.Lines.Add('path (' + IntToStr(f) + '):'); Dump(a, 1); } end; inc(f); end; Memo1.Lines.Add('Ïóòü: '); Dump(a, 1); x1:= x_m; y1:= y_m; f2:= f; while (f >= 0) do begin path[f].x:= x1; path[f].y:= y1; Find(x1, y1, (f+1) and 1, f); dec(f); end; Продолжение приложения Б v_m:= MaxInt; x_m:= -1; index:= 1; while (index < f2) do begin f:= plan.Arr[ path[index].x, path[index].y ]; if (f < v_m) then begin v_m:= f; x_m:= index; end; inc(index,2); end; for index:= 0 to f2-1 do begin f:= plan.Arr[ path[index].x, path[index].y ]; if ((index and 1) = 0) then f:= f + v_m else f:= f - v_m; plan.Arr[ path[index].x, path[index].y ]:= f; end; end; procedure TForm1.Button5Click(Sender: TObject); procedure c(x, y: integer; s: string); begin StringGrid1.Cells[ x, y ]:= s; end; begin StringGrid1.ColCount:= 7; StringGrid1.RowCount:= 5; c(2, 1, '100'); c(3, 1, '110'); c(4, 1, '90'); c(5, 1, '100'); c(6, 1, '130'); c(1, 2, '150'); c(1, 3, '240');
|