※ 引述《kevinc0227 (icedragon)》之銘言:
: 但是第二題開始就有點不知該如何下手,目前的想法如下:
: 1.使用第一題的程式讀檔,dict格式。
: 2.列出所有點的TM2座標,list格式。
: 3.接下來想要將每個點的(x,y)座標減去所求點的座標,求得與所求點距離小於1.5(根號2)的點。
: 4.開一個空dict(list?),將範圍內的點的人口數放入。
: 5.最後比較哪一個所求點的人口數最多。
: 目前實在不知道3.4.5該如何以程式寫出。
: (圖二)目前進度:http://i.imgur.com/I5e2Wwm.jpg
: (附二)說明影片:http://bit.ly/2HjeqWl
: (附二)影片是一開始用來思考該如何決定賣場座標的思考方式,雖然題目說明服務範圍是正方形,以方形斜邊一半為半徑的圓,不會影響賣場座標,或許比較好思考,但之後該如何決定正方形的角度就不曉得了。
: 目前的想法如上,也不太確定這樣選取範圍的方式是否正確,實在焦頭爛額,感謝各位願意協助的版友。
我也是新手 來討論一下
題目是沒有寫得很清楚
不過我猜你們誤解老師的用意了
你們想的方向算是進階版
如果你們基礎版ok了再進階吧
題目既然給的是3x3方塊
可見他沒有要你們搞得那麼複雜
否則為什麼不是用直徑3的圓形範圍呢
圓形範圍不是比較直觀嗎
如果是3x3方塊下去擺放(不旋轉)
那其實問題簡化很多
也比較符合你們的程度
有2個做法:
第一個直接暴力地毯式搜索
在地圖上改變xy座標去滑動
被包進3x3之中的就累計人口數
然後你會得到你要的
第二個方法會非常簡單
你把每個行政里中心點依序放在3x3方塊的四個頂點
然後去看包到多少人口
如行政里1中心點為x,y
你就看這四個範圍
(x+3, y+3) (x+3, y-3) (x-3, y+3) (x-3, y-3)
共包到多少人口
依序把所有所有里跑過一遍
會有四個里放在頂點 得到最大人口數
這四個里就是解
然後你就會歸納出
3x3的中心可以擺放在
x = 最左邊的里x+1.5 ~ 最右邊的里x-1.5
y = 最上面的里y-1.5 ~ 最下面的里y+1.5
可以包到最多人
如果有誤歡迎指教啊