青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 183,  comments - 10,  trackbacks - 0

來(lái)自于《算法:C 語(yǔ)言實(shí)現(xiàn)》

在邊長(zhǎng)為 1 的正方形中隨機(jī)產(chǎn)生 N 個(gè)點(diǎn),計(jì)算有多少個(gè)點(diǎn)對(duì)之間的距離小于 d。

一種直觀的解法就是對(duì)每個(gè)點(diǎn),檢查其余其他點(diǎn)的距離。

另一種改進(jìn)的方法是,考慮到距離小于 d 才符合要求,對(duì)于許多一開(kāi)始就能知道距離大于 d 的點(diǎn)對(duì)沒(méi)有必要檢查。這里借助一個(gè)二維的鏈表數(shù)組進(jìn)行操作。

由 d 得到 G = 1 / d,把正方形劃分成一個(gè) (G + 2) * (G + 2) 的格子。對(duì)于要檢查的點(diǎn),只需要檢查其所在格子以及周圍的 8 個(gè)格子中的其他點(diǎn)與它的距離。這樣效率得到很大的提升。

解法一:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 #include <time.h>
 5 
 6 typedef struct
 7 {
 8     float x;
 9     float y;
10 } point;
11 
12 float distance(point a, point b)
13 {
14     float dx = a.x - b.x, dy = a.y - b.y;
15     return sqrt(dx * dx + dy * dy);
16 }
17 
18 float randFloat()
19 {
20     return 1.0 * rand() / RAND_MAX;
21 }
22 
23 int main()
24 {
25     float d = 0.1;
26     int i, j, cnt = 0, N = 100;
27 
28     point* a = (point*)malloc(N * sizeof (*a));
29     srand(time(0));
30     for (i = 0; i < N; ++i)
31     {
32         a[i].x = randFloat();
33         a[i].y = randFloat();
34     }
35     for (i = 0; i < N; ++i)
36     {
37         for (j = i + 1; j < N; ++j)
38         {
39             if (distance(a[i], a[j]) < d)
40             {
41                 ++cnt;
42             }
43         }
44     }
45     printf("%d edges shorter than %f\n", cnt, d);
46 }

改進(jìn)的解法:
 1 // 二維鏈表數(shù)組
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #include <math.h>
 6 #include <time.h>
 7 
 8 typedef struct
 9 {
10     float x;
11     float y;
12 } point;
13 
14 typedef struct node* link;
15 struct node
16 {
17     point p;
18     link next;
19 };
20 
21 link** grid;
22 int G;
23 float d;
24 int cnt;
25 
26 float distance(point a, point b)
27 {
28     float dx = a.x - b.x, dy = a.y - b.y;
29     return sqrt(dx * dx + dy * dy);
30 }
31 
32 float randFloat()
33 {
34     return 1.0 * rand() / RAND_MAX;
35 }
36 
37 void gridinsert(float x, float y)
38 {
39     int i, j;
40     link s;
41     int X = x * G + 1;
42     int Y = y * G + 1;
43     link t = (link)malloc(sizeof (*t));
44     t->p.x = x;
45     t->p.y = y;
46 
47     for (i = X - 1; i <= X + 1++i)
48     {
49         for (j = Y - 1; j <= Y + 1++j)
50         {
51             for (s = grid[i][j]; s != 0; s = s->next)
52             {
53                 if (distance(s->p, t->p) < d)
54                 {
55                     ++cnt;
56                 }
57             }
58         }
59     }
60     t->next = grid[X][Y];
61     grid[X][Y] = t;
62 }
63 
64 int** malloc2d(int r, int c)
65 {
66     int i;
67     int **= (int**)malloc(r * sizeof (int*));
68     for (i = 0; i < r; ++i)
69     {
70         t[i] = (int*)malloc(c * sizeof (int));
71     }
72     return t;
73 }
74 
75 int main()
76 {
77     int i, j, N = 100;
78     d = 0.1;
79     G = 1 / d;
80 
81     grid = (link**)malloc2d(G + 2, G + 2);
82 
83     for (i = 0; i < G + 2++i)
84     {
85         for (j = 0; j < G + 2++j)
86         {
87             grid[i][j] = 0;
88         }
89     }
90 
91     srand(time(0));
92     for (i = 0; i < N; ++i)
93     {
94         gridinsert(randFloat(), randFloat());
95     }
96 
97     printf("%d edges shorter than %f\n", cnt, d);
98     return 0;
99 }
posted on 2011-05-16 14:12 unixfy 閱讀(138) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲三级视频| 久久免费午夜影院| 两个人的视频www国产精品| 久久激情综合| 午夜在线电影亚洲一区| 欧美一区激情| 麻豆精品在线视频| 欧美激情一区二区三区四区 | 欧美精品情趣视频| 欧美日韩妖精视频| 国产欧美日韩91| 亚洲第一中文字幕| 亚洲无人区一区| 久久久久久久一区| 最新中文字幕亚洲| 亚洲少妇自拍| 久久免费偷拍视频| 国产精品久久久久国产精品日日| 国产一区二区三区黄| 亚洲人久久久| 性亚洲最疯狂xxxx高清| 欧美国产日韩a欧美在线观看| 99精品国产福利在线观看免费| 欧美一区二区福利在线| 欧美精品久久天天躁 | 日韩网站在线观看| 午夜精品免费在线| 欧美激情一区二区三区全黄| 亚洲一区在线看| 一本色道久久综合亚洲精品小说 | 欧美日韩国产一区二区三区| 国产精品久久久久久av下载红粉| 伊人久久婷婷| 午夜精品亚洲| 亚洲欧洲在线免费| 久久精品一区二区三区四区 | 亚洲激情第一区| 欧美中文字幕精品| 影音先锋欧美精品| 亚洲图中文字幕| 老司机精品视频一区二区三区| 亚洲精品乱码久久久久久| 亚洲欧美日韩精品一区二区| 欧美高清视频www夜色资源网| 国产亚洲美州欧州综合国| 亚洲性感激情| 亚洲精品在线一区二区| 欧美成在线观看| 在线观看日韩国产| 久久九九国产精品怡红院| 9i看片成人免费高清| 欧美aa国产视频| 在线免费观看日本欧美| 久久在线免费| 久久激情视频久久| 国产一本一道久久香蕉| 久久精品九九| 久久狠狠久久综合桃花| 国产亚洲午夜| 久久久久久精| 久久精品99国产精品| 国产亚洲欧美一区二区| 久久中文精品| 免费的成人av| 亚洲裸体视频| 亚洲美女精品一区| 欧美色另类天堂2015| 亚洲欧美韩国| 午夜精品一区二区三区电影天堂 | 欧美一区二区三区男人的天堂| 国产九九精品视频| 久久九九久精品国产免费直播| 久久久久成人精品免费播放动漫| 亚洲高清不卡av| 91久久精品www人人做人人爽| 欧美欧美天天天天操| 亚洲自拍偷拍网址| 午夜精品久久久久久久99黑人| 国产一区美女| 亚洲国产精彩中文乱码av在线播放| 免费在线亚洲欧美| av不卡在线| 国产精品美女黄网| 亚洲高清在线视频| 亚洲国产精品一区二区尤物区 | 中文国产一区| 亚洲视频中文| 在线电影欧美日韩一区二区私密| 欧美大片免费观看| 欧美视频在线观看免费| 欧美三日本三级少妇三2023| 欧美一级大片在线观看| 久久在线免费观看| 亚洲视频 欧洲视频| 久久av一区二区三区漫画| 亚洲人成在线免费观看| 亚洲女同在线| 亚洲久色影视| 久久久久久尹人网香蕉| 亚洲性感激情| 欧美大片专区| 久久性天堂网| 国产精品任我爽爆在线播放| 欧美激情免费在线| 国产亚洲制服色| 一区二区毛片| 亚洲精品欧美日韩专区| 欧美一级专区| 亚洲一区在线观看免费观看电影高清| 欧美一级一区| 欧美一区二区精美| 欧美日本一区二区三区| 免费看成人av| 国色天香一区二区| 亚洲尤物在线| 亚洲一区二区三区免费观看| 蜜桃av综合| 久久噜噜噜精品国产亚洲综合| 欧美日韩综合视频| 亚洲国产精品一区二区久| 狠狠干成人综合网| 亚洲一区精品在线| 亚洲午夜高清视频| 欧美成人福利视频| 免费观看成人鲁鲁鲁鲁鲁视频| 国产亚洲精品福利| 亚洲一区二区视频在线| 亚洲在线一区二区| 欧美性猛交视频| 一个色综合导航| 在线视频免费在线观看一区二区| 欧美成在线观看| 亚洲精品久久久久久久久久久| 亚洲精品午夜| 欧美—级a级欧美特级ar全黄| 亚洲国产欧美国产综合一区 | 国产精品美女黄网| 亚洲一区二区三区四区五区黄| 亚洲一区二区日本| 国产精品久久一区主播| 亚洲影院色无极综合| 亚洲男人的天堂在线| 国产精品初高中精品久久| 99一区二区| 亚洲第一福利视频| 亚洲人成人一区二区三区| 久久一区二区视频| 亚洲福利电影| 亚洲香蕉伊综合在人在线视看| 国产精品久久久久久久久搜平片 | 久久成人精品| 国产亚洲午夜| 蜜桃av噜噜一区| 99ri日韩精品视频| 性xx色xx综合久久久xx| 好男人免费精品视频| 免费成人高清| 中日韩视频在线观看| 久久精品视频在线观看| 亚洲国产精品久久久久秋霞不卡 | 加勒比av一区二区| 久久综合久久综合九色| 亚洲精品久久嫩草网站秘色| 午夜精品av| 在线日本成人| 欧美午夜精品| 久久全球大尺度高清视频| 亚洲精品美女久久久久| 性18欧美另类| 亚洲精品一区二区三区樱花| 国产精品a久久久久久| 久久蜜臀精品av| 亚洲婷婷综合久久一本伊一区| 久久青草福利网站| 在线亚洲一区| 亚洲高清一区二区三区| 国产精品青草综合久久久久99| 久久综合色婷婷| 欧美亚洲网站| 亚洲美女福利视频网站| 玖玖综合伊人| 亚洲欧美久久久| 夜夜嗨av一区二区三区四区| 国内精品伊人久久久久av影院 | 亚洲国产精品传媒在线观看| 欧美日韩午夜精品| 久久久噜噜噜久久人人看| 亚洲视频欧洲视频| 亚洲国产成人午夜在线一区| 久久久久一区| 国产亚洲人成网站在线观看| 欧美三级韩国三级日本三斤| 欧美a级一区| 久久乐国产精品| 欧美亚洲综合久久| 中文高清一区| 一本一道久久综合狠狠老精东影业 | 免费欧美网站| 久久激情视频久久| 亚洲第一级黄色片|