❶ 郵局選址的分治演算法,C 語言。怎麼辦
通過分治演算法解決郵局選址問題的C語言代碼如下:首先,引入必要的頭文件並定義最大數組長度為10000。定義結構體Rst,包含小區編號idx和該編號的權重l。
設置全局變數n表示小區數量,數組x和y分別存儲每個小區的x和y坐標,數組num存儲每個小區的權重。定義函數f,參數s和e表示小區編號區間,函數目標是求出該區間內使所有小區到郵局加權距離和最小的小區編號和最小距離和。
若區間內只有一個小區,直接返回該小區編號和0。否則,遞歸求解區間中點左右兩部分,取左右兩部分的最小距離和對應小區編號與左右邊界值的最小距離和比較,返回最小值。
主函數中,輸入n和所有小區的坐標、權重,調用f函數求解,輸出郵局最優位置的編號和到所有用戶的加權距離和。
代碼的時間復雜度為O(n^2),相當於枚舉,演算法優勢未充分展現。總結,該題目設計不夠合理,未充分展現分治演算法的效率優勢。