※ 引述《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
可以包到最多人
如果有误欢迎指教啊