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

posts - 183,  comments - 10,  trackbacks - 0

來自于《算法:C 語言實現》

在邊長為 1 的正方形中隨機產生 N 個點,計算有多少個點對之間的距離小于 d。

一種直觀的解法就是對每個點,檢查其余其他點的距離。

另一種改進的方法是,考慮到距離小于 d 才符合要求,對于許多一開始就能知道距離大于 d 的點對沒有必要檢查。這里借助一個二維的鏈表數組進行操作。

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

解法一:

 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 }

改進的解法:
 1 // 二維鏈表數組
 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) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   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>
            亚洲国产精品福利| 亚洲精品美女久久7777777| 蜜桃久久精品乱码一区二区| 亚洲无线视频| 国产日韩精品视频一区| 亚洲美女免费视频| 亚洲精品一品区二品区三品区| 久久久久天天天天| 欧美精品一区二区三区在线播放| 免费成人美女女| 亚洲免费播放| 亚洲精品中文字幕女同| 欧美日本一道本在线视频| 久久中文字幕导航| 鲁大师成人一区二区三区| 欧美一进一出视频| 黄色成人av| 亚洲东热激情| 国产精品视频xxx| 免费成人黄色片| 免费在线欧美视频| 99热这里只有精品8| 日韩手机在线导航| 国产精品久久一区二区三区| 99成人在线| 久久久久欧美精品| 午夜久久资源| 欧美久久视频| 亚洲午夜一区二区三区| 欧美一级片一区| 亚洲综合日本| 久久一区二区三区四区| 欧美视频日韩| 欧美黑人在线观看| 国产亚洲aⅴaaaaaa毛片| 亚洲国产日韩一区| 国产精品久久久久久模特| 亚洲人成精品久久久久| 午夜精品美女自拍福到在线| 激情综合网激情| 欧美不卡视频一区发布| 欧美日韩国产精品自在自线| 亚洲精品裸体| 久久久久久久久久久久久女国产乱 | 欧美日韩1234| 久久综合狠狠综合久久激情| 国产欧美日韩不卡免费| 日韩午夜在线| 日韩午夜中文字幕| 蜜桃av噜噜一区| 国产久一道中文一区| 亚洲精品一区二区三区四区高清 | 亚洲美女视频网| 在线观看国产欧美| 久久久999| 久久天天躁狠狠躁夜夜av| 国产精品porn| aa级大片欧美| 欧美成人亚洲| 一本到12不卡视频在线dvd| 国产欧美在线| 欧美国产一区视频在线观看| 国产一区二区三区在线观看免费| 欧美在线播放高清精品| 蜜月aⅴ免费一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美日韩一区二区三区在线视频| 久久久久国产一区二区三区四区| 国产精品美女主播| 久久精品麻豆| 狠狠久久亚洲欧美专区| 欧美亚洲自偷自偷| 亚洲欧洲精品一区二区精品久久久| 制服诱惑一区二区| 美女网站久久| 久久九九99| av不卡在线看| 亚洲国产精品毛片| 国产欧美日韩精品丝袜高跟鞋 | 国产亚洲一区二区精品| 米奇777在线欧美播放| 亚洲欧洲av一区二区| 国产欧美一区二区三区在线看蜜臀| 久久精品国产欧美激情 | 欧美一区二区三区在线视频| 久久午夜视频| 99精品视频免费观看视频| 欧美日韩视频不卡| 欧美日韩在线高清| 久久久久久亚洲精品杨幂换脸| 亚洲日本中文字幕区| 在线欧美亚洲| 影音先锋久久久| 一区二区三区在线不卡| 国产精品亚洲综合色区韩国| 欧美美女视频| 欧美激情国产高清| 久久久人成影片一区二区三区观看| 亚洲啪啪91| 亚洲日本成人在线观看| 亚洲一区二区在线| 国产精品推荐精品| 欧美主播一区二区三区| 久久男女视频| 国产精品99久久久久久久女警| 亚洲视频欧美在线| 一区二区在线视频| 在线亚洲+欧美+日本专区| 一本一本久久| 国产一区视频网站| 美日韩精品免费观看视频| 蜜桃av一区二区三区| 一区二区欧美视频| 亚洲欧美日韩视频一区| 亚洲高清在线观看一区| 日韩一区二区精品在线观看| 国产精品影视天天线| 亚洲综合视频1区| 亚洲国产一二三| 久久色中文字幕| 伊人精品视频| 欧美激情精品久久久久久| 欧美.www| 亚洲一品av免费观看| 亚洲一区日韩| 1769国内精品视频在线播放| 久久久久久久久久久久久久一区| 久久国产精品一区二区三区| 亚洲国产美女精品久久久久∴| 亚洲欧洲日本mm| 国产精品人成在线观看免费| 麻豆9191精品国产| 久久免费国产精品1| 亚洲国产美女| 亚洲欧美中文日韩v在线观看| 精品盗摄一区二区三区| 亚洲精品一区二区三区樱花| 国产精品久久久久久久久久久久久久| 久热精品视频在线| 欧美日韩亚洲一区二区三区在线观看 | 欧美日韩三级| 久久天堂av综合合色| 欧美精品九九99久久| 久久久久久欧美| 国产精品一二三四| 亚洲美女免费精品视频在线观看| 国产一区视频在线观看免费| 亚洲主播在线播放| 一本久久a久久免费精品不卡| 久久久久久久一区二区| 欧美在线地址| 亚洲人成久久| 亚洲精品影院在线观看| 亚洲丰满在线| 午夜国产一区| 久久精品91久久久久久再现| 久久久爽爽爽美女图片| 久久免费视频网站| 国户精品久久久久久久久久久不卡| 中文网丁香综合网| 亚洲免费观看| 欧美大尺度在线| 午夜日本精品| 欧美精品aa| 亚洲免费视频观看| 久久久亚洲午夜电影| 亚洲美女诱惑| 国产一区二区黄| 欧美国产日韩一区二区三区| 一本色道久久加勒比精品| 亚洲第一在线综合网站| 欧美韩国日本一区| av成人老司机| 在线看片成人| 国产一区日韩欧美| 国产精品久久久久77777| 久久性天堂网| 欧美一区二区视频在线观看| 亚洲国产午夜| 男女精品视频| 久久久久久久性| 亚洲欧美一区二区激情| av成人免费| 99re这里只有精品6| 亚洲国产黄色| 在线观看国产日韩| 国产亚洲永久域名| 国产精品天美传媒入口| 欧美午夜精彩| 欧美日韩国产首页| 欧美激情bt| 欧美精品xxxxbbbb| 欧美日韩hd| 欧美美女福利视频| 欧美视频国产精品| 国产精品午夜在线观看| 国产精品久久国产精麻豆99网站| 欧美日韩国产电影| 国产精品国产自产拍高清av| 国产精品一区二区a|