2013資料結構課程設計之便利店選址 三分法

2021-06-18 08:31:20 字數 1831 閱讀 3185

[問題描述

]某小區決定在小區內部建一家便利店,現小區內部共有八棟樓,它們的地理座標分別為:(10,20) (30,34) (19,25) (38,49.1) (9,38.1) (2,34) (5,8) 

(29,48)。同時,其中的住戶人數分別為:30, 45, 28, 8, 36, 16, 78, 56。為了方便更多的住戶購物,要求實現總體最優,請問便利店應該建立在**?

【提示】

1)便利店無論選址何處,八棟樓的居民均可直接到達,即八棟樓與便利店均相鄰,且距離為直線距離;

2)八棟樓的居民人數為權重,應該方便大多數人,實現總體最優。

下面是第一次寫的做法  不精確

解題思路:對便利店的x 和y 分別使用三分法   先用x三分確定y  再用y三分確定x 

**如下:

#include #include using namespace std;

struct building

;building bd[1000];

int n;//n棟樓

double minx,maxx,miny,maxy;//記錄各棟樓的區域

double midx,mmidx,midy,mmidy;

double result_x,result_y,sum = 100000;//最後結果

double dis(double x,double y)//計算距離

return sum;

}void d_divide()//三分法求位置

; if(dis(midx,midy) > dis(mmidx,midy))

minx = midx;

else

maxx = mmidx;

midx = (minx + maxx)/2;

mmidx = (midx + maxx)/2;

};result_x = midx;

result_y = midy;

sum = dis(result_x,result_y);

}int main()

d_divide();

cout<<"\n便利店選址座標為:"<

以上解法有一點誤差    因為每次if(dis(midx,midy) > dis(midx,mmidy)) 時使用的都是midx 的最佳y  下面還把這樣求得的y當做了mmidx的最佳y

下面是改正後的**

#include #include using namespace std;

struct building

;building bd[1000];

int n;//n棟樓

double minx,maxx,miny,maxy;//記錄各棟樓的區域

double midx,mmidx,midy,mmidy;

double result_x,result_y,sum = 100000;//最後結果

double dis(double x,double y)//計算距離

return sum;

}double divide_y(double x)//三分法求y

; return dis(x,midy);

}void d_divide()//三分法求x

; result_x = midx;

result_y = midy;

sum = dis(result_x,result_y);

}int main()

d_divide();

cout<<"\n便利店選址座標為:"<

資料結構課程設計

資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...

資料結構課程設計

小明是乙個計算機專業top student 祝賀他畢業了。並準備到銀行參加工作。上班第一天,經理叫他編制乙個實現乙個活期儲蓄處理程式,算作考查。上班第一天,一定要給領導乙個好印象,小明二話沒說,就答應了。現要你是小明了,請完成如下題目功能。儲戶開戶 銷戶 存入 支出活動頻繁,系統設計要求 1 能比較...

資料結構課程設計

一 實訓目的 通過課程設計,學會運用資料結構知識,針對具體應用,自己設計合理資料結構,確定儲存結構,並能設計具體操作演算法,選擇使用具體語言進行實現。掌握c 較複雜程式的組織和設計過程,除錯技巧。學習解決實際問題的能力。題目1.小明是乙個計算機專業top student,祝賀他畢業了。並準備到銀行參...