2463。最小總行駛距離
難度:難
主題:陣列、動態規劃、排序
X軸上有一些機器人和工廠。給定一個整數陣列機器人,其中 robots[i] 是第 ith 個機器人的位置。您還得到一個2D 整數陣列工廠,其中factory[j] = [positionj, limitj] 表示positionj 是j 的位置第個工廠且第j第個工廠最多可以維修j個機器人。
每個機器人的位置都是獨一無二的。每個工廠的定位也獨一無二。請注意,機器人最初可以處於與工廠相同的位置。
所有機器人一開始都壞了;他們一直朝著一個方向前進。此方向可以是X軸的負方向或正方向。當機器人到達未達極限的工廠時,工廠會修理機器人,然後機器人就會停止移動。
隨時,您可以為某個機器人設定初始移動方向。您的目標是最小化所有機器人行駛的總距離。
返回所有機器人行駛的最小總距離。產生測試用例,以便可以修復所有機器人。
請注意
範例1:
範例2:
約束:
提示:
解:
我們可以對排序的機器人和工廠陣列使用動態程式設計。其想法是最大限度地縮短每個機器人到工廠維修所需的距離,同時尊重每個工廠的維修能力。以下是此方法的逐步細分:
按位置對機器人和工廠數組進行排序。排序有助於最大限度地縮短行進距離,因為我們可以將附近的機器人分配到附近的工廠。
動態規劃方法:我們定義一個2D DP表dp[i][j],其中:
態轉換:
讓我們用 PHP 實作這個解:2463。最小總行駛距離
<?php /** * @param Integer[] $robot * @param Integer[][] $factory * @return Integer */ function minimumTotalDistance($robot, $factory) { ... ... ... /** * go to ./solution.php */ } // Test cases $robot = [0, 4, 6]; $factory = [[2, 2], [6, 2]]; echo minimumTotalDistance($robot, $factory); // Output: 4 $robot = [1, -1]; $factory = [[-2, 1], [2, 1]]; echo minimumTotalDistance($robot, $factory); // Output: 2 ?>
此解決方案可有效計算所有待維修機器人在工廠限制內的最小行進距離。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是最小總行駛距離的詳細內容。更多資訊請關注PHP中文網其他相關文章!