❶ 邮局选址的分治算法,C 语言。怎么办
通过分治算法解决邮局选址问题的C语言代码如下:首先,引入必要的头文件并定义最大数组长度为10000。定义结构体Rst,包含小区编号idx和该编号的权重l。
设置全局变量n表示小区数量,数组x和y分别存储每个小区的x和y坐标,数组num存储每个小区的权重。定义函数f,参数s和e表示小区编号区间,函数目标是求出该区间内使所有小区到邮局加权距离和最小的小区编号和最小距离和。
若区间内只有一个小区,直接返回该小区编号和0。否则,递归求解区间中点左右两部分,取左右两部分的最小距离和对应小区编号与左右边界值的最小距离和比较,返回最小值。
主函数中,输入n和所有小区的坐标、权重,调用f函数求解,输出邮局最优位置的编号和到所有用户的加权距离和。
代码的时间复杂度为O(n^2),相当于枚举,算法优势未充分展现。总结,该题目设计不够合理,未充分展现分治算法的效率优势。