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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ndp.pas

?? 用pascal實(shí)現(xiàn)尋找最近點(diǎn)對(duì)問(wèn)題
?? PAS
字號(hào):
unit NDP;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,math;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure Draw; 
  public
    { Public declarations }
  end;

const
PointSize=3;
e=10;
PointRight=400;
PointBottom=400;
PointTop=20;
PointLeft=20;
MaxPointsCount=100;
var
  Form1: TForm1;

implementation

{$R *.DFM}

{求兩點(diǎn)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;

{==================================================

           尋找點(diǎn)集PointType中的最近點(diǎn)對(duì)

           u,v為最近點(diǎn)對(duì)在PointSet中的下標(biāo);
           函數(shù)返回值為P1,P2的距離。
                     written by starfish
                        starfish.h@china.com

===================================================}

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 Init_NDP;   {初始化}
var
i,j,Xk,Yk:integer;
begin
setlength(X,Length(PointSet));
setlength(Y,Length(PointSet));
for i:=0 to high(PointSet) do  {初始化數(shù)組}
 begin
  X[i]:=i;
  Y[i]:=i;
 end;

for i:=0 to high(PointSet)-1 do  {對(duì)數(shù)組X和Y進(jìn)行排序,使得X按照點(diǎn)的x坐標(biāo)遞增,Y按照點(diǎn)的y坐標(biāo)遞增}
 begin
   Xk:=i;
   Yk:=i;
   for j:=i+1 to high(PointSet) do
    begin
    if PointSet[X[j]].x<PointSet[X[Xk]].x then Xk:=j;
    if PointSet[Y[j]].y<PointSet[Y[Yk]].y then Yk:=j;
    end;
   Swap(X[i],X[Xk]);
   Swap(Y[i],Y[Yk]);
 end;
end;


{函數(shù)NDP找出X[a..b]中的最近點(diǎn)對(duì)u,v(u,v指示點(diǎn)在PointSet中的下標(biāo)),返回最近點(diǎn)對(duì)的距離;
 數(shù)組Y將X中的點(diǎn)按照y坐標(biāo)遞增排序;X始終保持按照x坐標(biāo)遞增排序}

function NDP(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個(gè)點(diǎn),這兩個(gè)點(diǎn)就是最近點(diǎn)對(duì)}
 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個(gè)點(diǎn),就直接求出兩兩之間的距離,找到最近點(diǎn)對(duì)}
 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;
{對(duì)X[a..b]進(jìn)行劃分,劃分為X[a..t]和X[t+1..b],使兩部分盡量平均}
t:=(a+b)div 2;
SetLength(Yl,0);
SetLength(Yr,0);
{將Y分割成Yl和Yr,使得Yl里的點(diǎn)屬于X[a..t],Yr里的點(diǎn)屬于X[t+1..b],并且按照y坐標(biāo)遞增排序}
for i:=0 to high(Y) do
 if PointSet[Y[i]].x<=PointSet[X[t]].x then  {說(shuō)明點(diǎn)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]中的最近點(diǎn)對(duì)}
d1:=NDP(a,t,ul,vl,Yl);
d2:=NDP(t+1,b,ur,vr,Yr);
{使d1成為左右兩個(gè)區(qū)間內(nèi)最近點(diǎn)對(duì)的距離,ul,vl為最近點(diǎn)對(duì)}
if d2<d1 then
 begin
   d1:=d2;
   ul:=ur;
   vl:=vr;
 end;
{將Y中以分界線l=PointSet[X[t]].x為中線,寬度為2*d1的帶狀區(qū)域內(nèi)的點(diǎn)存儲(chǔ)在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;
{對(duì)于Yl中的每一個(gè)點(diǎn)Yl[i],計(jì)算Yl中其它點(diǎn)到它的距離,找出比d1小的值;
 根據(jù)抽屜原理知最多只要計(jì)算Yl[i]之后的7個(gè)點(diǎn)就可以了}
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_NDP; {初始化}
result:=NDP(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:=trunc(random(Pointright-PointLeft))+PointLeft;
    PointSet[i].y:=trunc(random(Pointbottom-PointTop))+PointTop;
    j:=0;
    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.Draw;

var
PointSet:array of TPoint;
count,len,i:integer;
u,v:integer;
nearest:real;
begin
canvas.Rectangle(PointLeft-5,PointTop-5,Pointright+5,Pointbottom+5);
randomize;
repeat
count:=trunc(random(MaxPointsCount));
until count>3;
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);
canvas.Pen.Color:=clred;
canvas.Pen.width:=3;
canvas.moveTo(PointSet[u].x,PointSet[u].y);
canvas.lineto(PointSet[v].x,PointSet[v].y);
canvas.Pen.width:=1;
canvas.Pen.Color:=clBlack;
caption:='最近點(diǎn)對(duì)之間距離為:'+FloatToStr(nearest);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
draw;
end;

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性感一区二区三区| 欧美一卡二卡三卡四卡| 免费欧美高清视频| 国产精品欧美一区喷水| 欧美丰满高潮xxxx喷水动漫 | 精品一区二区三区久久久| 最新久久zyz资源站| 欧美一级欧美一级在线播放| 94色蜜桃网一区二区三区| 久久国产剧场电影| 亚洲高清视频在线| 日韩毛片精品高清免费| 欧美精品一区视频| 日韩美女在线视频| 欧美区一区二区三区| 91网站视频在线观看| 国产精品自拍在线| 麻豆91在线观看| 偷拍一区二区三区四区| 悠悠色在线精品| 亚洲视频你懂的| 国产精品家庭影院| 国产午夜精品理论片a级大结局| 制服丝袜日韩国产| 欧美日韩免费观看一区三区| 在线亚洲高清视频| 一本色道久久综合亚洲aⅴ蜜桃| 国产寡妇亲子伦一区二区| 国内精品国产成人| 久久99热国产| 黄页视频在线91| 理论电影国产精品| 麻豆国产欧美一区二区三区| 免费观看91视频大全| 蜜桃精品视频在线| 麻豆久久久久久久| 精品在线视频一区| 国内精品久久久久影院色 | 色一情一伦一子一伦一区| 大胆欧美人体老妇| 成人精品国产免费网站| 国产传媒一区在线| 成人国产精品免费| 91亚洲大成网污www| 91极品视觉盛宴| 欧洲精品一区二区| 欧美久久一二三四区| 日韩一卡二卡三卡| 久久精品夜色噜噜亚洲aⅴ| 久久尤物电影视频在线观看| 国产偷v国产偷v亚洲高清| 日本一区二区成人在线| 最新中文字幕一区二区三区 | 国产嫩草影院久久久久| 欧美激情一区二区三区四区| 国产精品美女久久福利网站| 中文字幕一区二区三区色视频| 亚洲精品欧美专区| 午夜激情久久久| 蓝色福利精品导航| 成人免费毛片片v| 91香蕉视频污在线| 91精品午夜视频| 国产亚洲一区二区三区四区| 亚洲欧洲成人自拍| 日韩精品一区第一页| 国产精品一区一区| 一本一道综合狠狠老| 欧美一级久久久久久久大片| 国产亚洲视频系列| 亚洲免费观看高清完整| 美女mm1313爽爽久久久蜜臀| 成人中文字幕电影| 欧美色精品在线视频| 久久这里只有精品视频网| 亚洲欧美日韩人成在线播放| 日本中文字幕一区二区视频 | 国产尤物一区二区在线| 99久久精品国产一区二区三区| 欧美精品高清视频| 欧美国产乱子伦| 亚洲sss视频在线视频| 国产成人综合在线| 欧美日韩精品一区二区| 国产精品色婷婷久久58| 天堂一区二区在线| av高清不卡在线| 欧美α欧美αv大片| 亚洲精品国产精品乱码不99| 久久精品99久久久| 在线观看精品一区| 日本一区二区电影| 青青国产91久久久久久| 91网站黄www| 国产午夜精品一区二区| 日韩电影在线免费看| 色又黄又爽网站www久久| 久久久综合网站| 日韩精品1区2区3区| 色噜噜夜夜夜综合网| 国产欧美一区二区精品忘忧草 | 欧美日韩精品电影| 最好看的中文字幕久久| 国产剧情一区二区三区| 欧美高清www午色夜在线视频| 亚洲三级视频在线观看| 激情文学综合网| 在线不卡a资源高清| 夜夜嗨av一区二区三区四季av| 国产盗摄精品一区二区三区在线 | 一本色道久久综合亚洲精品按摩| 亚洲精品在线观| 久久精品国产77777蜜臀| 欧美女孩性生活视频| 一区二区三区四区高清精品免费观看| 国产成人自拍网| 精品国产免费人成在线观看| 日韩国产高清在线| 欧美人体做爰大胆视频| 亚洲午夜激情网站| 日本韩国精品一区二区在线观看| 国产精品三级av| 丁香天五香天堂综合| 国产亚洲午夜高清国产拍精品| 欧美一级黄色大片| 亚洲成在线观看| 欧美日韩精品一区二区天天拍小说| 亚洲人成在线观看一区二区| 日韩av在线免费观看不卡| 在线看国产一区| 亚洲精品videosex极品| 色94色欧美sute亚洲线路一久| 日韩理论电影院| 色综合中文字幕国产| 国产精品福利影院| 99精品久久只有精品| 亚洲欧美另类综合偷拍| 91成人在线精品| 亚洲国产精品欧美一二99| 欧美色视频一区| 日韩成人dvd| xvideos.蜜桃一区二区| 国产乱子轮精品视频| 国产亚洲精品7777| 丁香六月综合激情| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产你懂的| 欧美日韩黄色一区二区| 日日夜夜免费精品视频| 日韩亚洲欧美综合| 国产一区二区三区综合| 国产精品视频一区二区三区不卡| 91片黄在线观看| 亚洲777理论| 精品蜜桃在线看| 成人h动漫精品一区二区| 亚洲精品日韩专区silk| 91精品国产入口| 粉嫩欧美一区二区三区高清影视| 国产精品不卡一区| 欧美日韩夫妻久久| 国产美女精品在线| 亚洲欧美一区二区三区久本道91| 在线观看亚洲精品| 精品一区二区免费在线观看| 欧美国产精品v| 91黄色免费网站| 久久精品99久久久| 亚洲伦在线观看| 日韩三级伦理片妻子的秘密按摩| 高清beeg欧美| 午夜影院在线观看欧美| 久久久精品免费网站| 91黄色免费版| 国产精品18久久久久久vr| 亚洲综合免费观看高清完整版在线| 日韩欧美中文字幕一区| 99久久精品免费看| 青青草成人在线观看| 国产精品不卡在线| 欧美成人猛片aaaaaaa| 色婷婷精品大在线视频| 久久国产尿小便嘘嘘尿| 亚洲私人黄色宅男| 精品国产一二三| 欧美色手机在线观看| 成人午夜碰碰视频| 毛片av一区二区| 亚洲国产精品人人做人人爽| 国产三级精品三级| 欧美精品丝袜久久久中文字幕| 国产99久久久久久免费看农村| 午夜免费久久看| 1区2区3区精品视频| 日韩精品一区二区三区四区视频| 色天天综合色天天久久| 国产精品乡下勾搭老头1| 日韩国产在线观看一区| 亚洲精品免费在线播放| 国产午夜精品一区二区三区视频|