亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? conqueranddive.pas

?? 利用分治的算法實現平面最近點問題
?? PAS
字號:
unit ConquerandDive;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,math, ExtCtrls, SUIForm, SUIButton, SUIEdit, ComCtrls;

type
    TForm1 = class(TForm)
    Timer1: TTimer;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Label4: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    RichEdit1: TRichEdit;
    Edit3: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  public
   procedure DrawThepicture;
    { Public declarations }
  private
  end;

const

e=1;
PointRight=400;
PointTop=100;
PointBottom=400;
PointLeft=100;
MaxPointsCount=10;
var
  Form1: TForm1;
  count:integer;
  Num:integer;

  PointSize:integer;
 // b:PChar;
implementation

{$R *.DFM}

//求兩點P1,P2之間的距離
function Distance(P1,P2:TPoint):real;
begin
result:=sqrt((P1.x-P2.x)*(P1.x-P2.x)+(P1.y-P2.y)*(P1.y-P2.y));
end;
//比較兩個數的大小;
function   Compare(a,b:Integer):integer;
begin
result:= a-b;
end;

function Nearest_Dotted_Pairs(var PointSet:array of TPoint;var u,v:integer):real;
var
X,Y:array of integer;

procedure Swap(var a,b:integer);  {交換a,b}
var
tmp:integer;
begin
tmp:=a;
a:=b;
b:=tmp;
end;

procedure  QSort(var a: array of Integer; const lo0, hi0: Integer);
var
  lo, hi, mid, t : Integer;
begin
  lo := lo0;
  hi := hi0;
  Application.ProcessMessages;

  if (lo < hi) then begin
    mid := (lo + hi) div 2;

    while (lo < hi) do begin
      while ((lo<hi) and (Compare(a[lo], a[mid]) < 0)) do inc(lo);

      while ((lo<hi) and (Compare(a[hi], a[mid]) > 0)) do dec(hi);

      if (lo < hi) then begin
        t := a[lo];
        a[lo] := a[hi];
        a[hi] := t;
      end;
    end;

    if (hi < lo) then begin
      t := hi;
      hi := lo;
      lo := t;
    end;

    QSort(a, lo0, lo);
    if (lo = lo0) then t := lo+1 else t := lo;
    QSort(a, t, hi0);
  end;
end;
procedure Init_ConquerandDive;   {初始化}
var
i,j,Xk,Yk:integer;
begin
setlength(X,Length(PointSet));
setlength(Y,Length(PointSet));
for i:=0 to high(PointSet) do  {初始化數組}
// high is equal the sizeof(array)/sizof(alenment);
 begin
  X[i]:=i;
  Y[i]:=i;
 end;
 QSort(X,0,high(PointSet));
 QSort(Y,0,high(PointSet));
end;
{函數NDP找出X[a..b]中的最近點對u,v(u,v指示點在PointSet中的下標),返回最近點對的距離;
 數組Y將X中的點按照y坐標遞增排序;X始終保持按照x坐標遞增排序}

function ConquerandDive(a,b:integer;var u,v:integer;var Y:array of integer):real;
var
Yl,Yr:array of integer;
d1,d2,d3:real;
i,j,t,ul,vl,ur,vr:integer;
begin
if b-a=1 then {如果X[a..b]中只有2個點,這兩個點就是最近點對}
 begin
  result:=distance(PointSet[X[a]],PointSet[X[b]]);
  u:=X[a];
  v:=X[b];
  exit;
 end;
if b-a=2 then  {如果X[a..b]中只有3個點,就直接求出兩兩之間的距離,找到最近點對}
 begin
  d1:=distance(PointSet[X[a]],PointSet[X[a+1]]);
  d2:=distance(PointSet[X[a]],PointSet[X[a+2]]);
  d3:=distance(PointSet[X[a+1]],PointSet[X[a+2]]);
  if (d1<=d2)and(d1<=d3) then   {d1最小}
    begin
     u:=X[a];
     v:=X[a+1];
     result:=d1;
    end
   else
    if (d2<=d1)and(d2<=d3) then  {d2最小}
    begin
     u:=X[a];
     v:=X[a+2];
     result:=d2;
    end
    else      {d3最小}
    begin
     u:=X[a+1];
     v:=X[a+2];
     result:=d3;
    end;
   exit;
 end;
{對X[a..b]進行劃分,劃分為X[a..t]和X[t+1..b],使兩部分盡量平均}
t:=(a+b)div 2;
SetLength(Yl,0);
SetLength(Yr,0);
{將Y分割成Yl和Yr,使得Yl里的點屬于X[a..t],Yr里的點屬于X[t+1..b],并且按照y坐標遞增排序}
for i:=0 to high(Y) do
 if PointSet[Y[i]].x<=PointSet[X[t]].x then  {說明點Y[i]屬于X[a..t]}
      begin
       SetLength(Yl,Length(Yl)+1);
       Yl[High(Yl)]:=Y[i];
      end
 else begin
       SetLength(Yr,Length(Yr)+1);
       Yr[High(Yr)]:=Y[i];
      end;
{遞歸求出X[a..t]和X[t+1..b]中的最近點對}
d1:=ConquerandDive(a,t,ul,vl,Yl);
d2:=ConquerandDive(t+1,b,ur,vr,Yr);
{使d1成為左右兩個區間內最近點對的距離,ul,vl為最近點對}
if d2<d1 then
 begin
   d1:=d2;
   ul:=ur;
   vl:=vr;
 end;
{將Y中以分界線l=PointSet[X[t]].x為中線,寬度為2*d1的帶狀區域內的點存儲在Yl中}
setlength(Yl,0);
for i:=0 to high(Y) do
 if abs(PointSet[Y[i]].x-PointSet[X[t]].x)<=2*d1 then
  begin
   SetLength(Yl,Length(Yl)+1);
   Yl[High(Yl)]:=Y[i];
  end;
{對于Yl中的每一個點Yl[i],計算Yl中其它點到它的距離,找出比d1小的值;
 根據抽屜原理知最多只要計算Yl[i]之后的7個點就可以了}
for i:=0 to high(Yl)-1 do
 for j:=i+1 to min(i+7,High(Yl)) do
  begin
   d2:=distance(PointSet[Yl[i]],PointSet[Yl[j]]);
   if d2<d1 then
    begin
     d1:=d2;
     ul:=Yl[i];
     vl:=Yl[j];
    end;
  end;
result:=d1;
u:=ul;
v:=vl;
end;


begin

Init_ConquerandDive; //初始化;
result:=ConquerandDive(0,high(X),u,v,Y);
end;

{==========================================================}

procedure GernateTestData(var PointSet:array of TPoint;count:integer);

var
i,j:integer;
begin

for i:=0 to count-1 do
  repeat
    //時期產生的點在舉行范圍之內;
    PointSet[i].x:=50+trunc(random(Pointright-PointLeft))+PointLeft;
    PointSet[i].y:=(trunc(random(Pointbottom-PointTop))+PointTop)-50;
    j:=0;
    //保證兩點的距離大于10個像素;
    while (j<=i-1)and( (abs(PointSet[j].x-PointSet[i].x)>e)or(abs(PointSet[j].y-PointSet[i].y)>e))
     do inc(j);
  until j=i;
end;

procedure TForm1.DrawThepicture;

var
PointSet:array of TPoint;
len,i,j:integer;
u,v:integer;
 x1,x2,y1,y2:real;
nearest:real;
str1,str2,str3,str4:string;
begin
count:=1;
j:=Num;
//canvas.Rectangle(PointLeft-5,PointTop-5,Pointright+5,Pointbottom+5);
//randomize;
//repeat
//count:= trunc(random(MaxPointsCount));
//until count>3;
for i:=1 to j do
begin
 count:=count*2;

end;

setlength(PointSet,count);
GernateTestData(PointSet,count);
//產生完隨即數后;畫圓;
for i:=0 to count-1 do canvas.Ellipse(PointSet[i].x-PointSize,PointSet[i].y-PointSize,PointSet[i].x+PointSize,PointSet[i].y+PointSize);

nearest:=Nearest_Dotted_Pairs(PointSet,u,v);
x1:=(PointSet[u].X)/30.0-4.185;
y1:=12-(PointSet[u].Y)/30.0;
x2:=(PointSet[v].X)/30.0-4.185;
y2:=12-(PointSet[v].Y)/30.0;
str1:=Floattostr(x1);
str2:=Floattostr(y1);
str3:=Floattostr(x2);
str4:=Floattostr(y2);

Edit4.Text:=format('(%s,%s)',[str1,str2]);
Edit5.Text:=format('(%s,%s)',[str3,str4]);
Edit4.Show;
Edit5.Show;
nearest:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
canvas.Pen.Color:=clGreen;
canvas.Pen.width:=4;
canvas.moveTo(PointSet[u].x,PointSet[u].y);
canvas.lineto(PointSet[v].x,PointSet[v].y);
canvas.Pen.width:=1;
canvas.Pen.Color:=clBlack;
Edit2.Text:=Floattostr(nearest);
Edit2.Show;
end;



procedure TForm1.Button1Click(Sender: TObject);
var   str:string;
begin
repaint;

//Edit1.GetTextBuf(b,sizeof(Edit1.GetTextLen()));

if(Edit1.Text='')
then
begin
ShowMessage('請輸入一個1-10的數');
Exit;
end;

PointSize:=strtoint(Edit3.Text);
str:=Edit1.Text;
Num:=strtoint(str);
ShowMessage(format('%d',[Num]));
DrawThepicture;

end;
//畫坐標,使用定時器;
procedure TForm1.Timer1Timer(Sender: TObject);
begin

canvas.Pen.Color:=clBlack;
canvas.Brush.Color:=clBlack;
canvas.MoveTo(PointLeft,Pointbottom);
canvas.Ellipse(PointLeft-10,Pointbottom,PointLeft,Pointbottom+10);
canvas.Brush.Color:=clWhite;
canvas.Textout(PointLeft+50,Pointbottom,'1');
canvas.TextOut(PointLeft+350,pointbottom,'10');
canvas.TextOut(PointLeft-5,Pointbottom-50,'1');
canvas.TextOut(PointLeft-13,Pointbottom-350,'10');  //
canvas.Pen.Color:=clred;
canvas.Brush.Color:=clBlack;
canvas.MoveTo(PointLeft,Pointbottom);
canvas.LineTo(PointLeft+500,Pointbottom);
canvas.LineTo(PointLeft+490,PointBottom-10);
canvas.MoveTo(PointLeft+500,Pointbottom);
canvas.LineTo(PointLeft+490,PointBottom+10);
canvas.MoveTo(PointLeft,Pointbottom);
canvas.LineTo(PointLeft+500,Pointbottom);
canvas.LineTo(PointLeft+495,PointBottom-5);
canvas.MoveTo(PointLeft+500,Pointbottom);
canvas.LineTo(PointLeft+495,PointBottom+5);
canvas.MoveTo(PointLeft,Pointbottom);
canvas.LineTo(pointLeft,PointBottom-400);
canvas.LineTo(pointLeft-10,Pointbottom-390);
canvas.MoveTo(pointLeft,Pointbottom-400);
canvas.LineTo(pointLeft+10,Pointbottom-390);
RichEdit1.Text:='在第一個輸入框輸入數字后產生2^n個隨機數,當輸入個數大時,像素應該小后點擊確定按鈕觀察結果';
//canvas.MoveTo();
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品第一页| 亚洲在线一区二区三区| 亚洲伦理在线精品| 免费成人av资源网| 91香蕉视频mp4| 日韩免费一区二区三区在线播放| 中文字幕中文字幕中文字幕亚洲无线| 日韩经典中文字幕一区| 99麻豆久久久国产精品免费| 久久先锋影音av鲁色资源网| 日韩高清一区二区| 在线国产电影不卡| 国产精品久久久一本精品 | 亚洲精品videosex极品| 久久国产综合精品| 欧美浪妇xxxx高跟鞋交| 亚洲视频中文字幕| 成人福利在线看| 久久久久九九视频| 国产精品综合二区| 久久久久国产精品麻豆ai换脸| 青青青伊人色综合久久| 欧美情侣在线播放| 亚洲午夜羞羞片| 欧美三级电影在线看| 亚洲综合999| 99精品久久免费看蜜臀剧情介绍| 国产欧美va欧美不卡在线| 精品系列免费在线观看| 日韩一区二区影院| 久热成人在线视频| 欧美成人a∨高清免费观看| 日韩 欧美一区二区三区| 91精品婷婷国产综合久久性色| 亚洲高清免费一级二级三级| 在线免费一区三区| 亚洲成人动漫av| 日韩三级中文字幕| 久久99精品国产麻豆不卡| 日韩欧美国产午夜精品| 经典三级一区二区| 国产精品久久久久久久久久免费看| 国产99久久久国产精品免费看| 国产日产欧美一区| 99精品视频一区二区| 成人免费在线视频观看| 99九九99九九九视频精品| 一区二区三区av电影| 欧美精品在线一区二区三区| 免费不卡在线视频| 久久综合色一综合色88| 成人午夜又粗又硬又大| 亚洲色图在线看| 欧美日韩在线不卡| 青青草精品视频| 国产婷婷一区二区| 91视频一区二区三区| 亚洲国产欧美在线人成| 日韩亚洲欧美综合| 成人涩涩免费视频| 亚洲自拍偷拍九九九| 日韩精品中文字幕一区 | 国产成人av福利| 综合自拍亚洲综合图不卡区| 欧美日韩一区三区四区| 九一九一国产精品| 1000精品久久久久久久久| 欧美乱熟臀69xxxxxx| 国产一区二区调教| 亚洲综合久久久久| 亚洲精品一区二区在线观看| 色素色在线综合| 久久精品999| 亚洲黄网站在线观看| 精品久久久久久久久久久院品网| 99精品欧美一区二区蜜桃免费| 日本不卡中文字幕| 亚洲三级小视频| 日韩欧美激情四射| 欧美日韩一区在线观看| 国产一区二区免费在线| 亚洲一区二区五区| 国产日韩欧美综合一区| 欧美精品国产精品| 91免费视频网| 国产精品18久久久| 免费看欧美女人艹b| 亚洲一区在线观看视频| 欧美激情自拍偷拍| 制服丝袜中文字幕一区| 色综合久久综合| 国产suv精品一区二区6| 青青青爽久久午夜综合久久午夜| 一区二区三区在线视频观看 | 狠狠色丁香久久婷婷综| 亚洲第一福利视频在线| 国产精品理伦片| 国产亚洲精品7777| 欧美大白屁股肥臀xxxxxx| 欧美丝袜丝交足nylons| 色综合久久综合中文综合网| 国产精品69久久久久水密桃| 黄色日韩三级电影| 另类小说欧美激情| 丝袜亚洲另类欧美| 亚洲图片欧美综合| 亚洲视频一区二区在线| 中文字幕巨乱亚洲| 久久精品视频一区二区三区| 精品99久久久久久| 欧美成人艳星乳罩| 日韩精品中午字幕| 精品国产sm最大网站免费看| 日韩午夜在线观看视频| 91精品婷婷国产综合久久| 91精品国产综合久久久久久漫画 | 成人午夜看片网址| 国产精品综合二区| 激情文学综合插| 国产一区在线视频| 国产精品亚洲专一区二区三区| 国内成人精品2018免费看| 激情成人综合网| 国产精品一二三区在线| 夫妻av一区二区| 成人国产一区二区三区精品| 成人福利视频网站| 91免费视频大全| 91福利在线播放| 欧美高清视频一二三区| 日韩欧美国产三级| 中文字幕欧美区| 亚洲精品国产视频| 午夜亚洲国产au精品一区二区| 日本伊人色综合网| 国产一区二区三区最好精华液| 成人激情动漫在线观看| 欧美亚洲一区二区在线观看| 欧美日本在线一区| 亚洲精品一区在线观看| 成人欧美一区二区三区视频网页| 亚洲成在人线免费| 国产一区二区三区视频在线播放| 成人的网站免费观看| 欧美亚洲一区二区在线| 日韩欧美在线网站| 中文字幕在线一区免费| 亚洲大片精品永久免费| 国产精品99久久久久久似苏梦涵 | 亚洲天天做日日做天天谢日日欢| 一区二区高清免费观看影视大全| 热久久一区二区| 成人中文字幕电影| 欧美唯美清纯偷拍| 久久久美女艺术照精彩视频福利播放| 亚洲欧美怡红院| 麻豆中文一区二区| 91社区在线播放| 日韩欧美亚洲另类制服综合在线| 国产精品卡一卡二卡三| 免费黄网站欧美| 色噜噜狠狠色综合中国| 精品免费99久久| 亚洲影院免费观看| 大白屁股一区二区视频| 欧美一级精品在线| 亚洲欧美成人一区二区三区| 国内精品免费在线观看| 欧美三级日韩三级国产三级| 欧美激情综合在线| 久久国产精品99久久人人澡| 欧美在线观看一区二区| 国产精品美女久久久久久久久| 蜜桃久久av一区| 欧美手机在线视频| 亚洲精品网站在线观看| 国产精品一卡二卡| 日韩免费看的电影| 丝袜美腿一区二区三区| 在线观看www91| ...av二区三区久久精品| 国产一区二区三区黄视频 | 欧美精选在线播放| 亚洲精品ww久久久久久p站| 丰满亚洲少妇av| 久久一区二区三区四区| 久久99精品网久久| 日韩一区二区视频在线观看| 日韩精品一级二级| 欧美浪妇xxxx高跟鞋交| 无吗不卡中文字幕| 色婷婷亚洲婷婷| 亚洲乱码国产乱码精品精可以看| 国产精品一级黄| 国产午夜亚洲精品羞羞网站| 久久66热偷产精品| 久久久美女毛片| 国产精品88888| 欧美高清在线视频| 北条麻妃国产九九精品视频|