[問題描述
]某小區決定在小區內部建一家便利店,現小區內部共有八棟樓,它們的地理座標分別為:(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,祝賀他畢業了。並準備到銀行參...