826,乙個n * m矩陣代表乙個電腦的陣列,給你乙個list代表壞掉的電腦座標。現在我們從(0,0)出發修電腦,要求:
1.必須修完當前行所有壞掉的電腦才能走向下一行。
2.如果要走向下一行,修理工必須先返回到這一行的最左端或者最右端。
求最短的訪問距離。
輸入的矩陣大小為 n x m ,n <= 200,m <= 200。
壞掉的機器 num <= 1000。
修完最後一台電腦後,也需要返回最後一行的最左端或最右端。
# example:
# input:
# n = 3
# m = 10
# list = [[0,0],[0,9],[1,7]]
# output: 15
# explanation:
# starting from (0,0), fix 0, then go to (0,9) to fix 1 and go from (0,9) to next line (1,9), then go to (1,7) to fix 3, then go back to (1,9) and go to (2,9).
1826.py#乙個n * m矩陣代表乙個電腦的陣列,給你乙個list< point >代表壞掉的電腦座標。現在我們從(0,0)出發修電腦,要求:2#
1.必須修完當前行所有壞掉的電腦才能走向下一行。3#
2.如果要走向下一行,修理工必須先返回到這一行的最左端或者最右端。4#
求最短的訪問距離。5#
6#輸入的矩陣大小為 n x m ,n <= 200,m <= 200。7#
壞掉的機器 num <= 1000。8#
修完最後一台電腦後,也需要返回最後一行的最左端或最右端。910
#example:11#
input:12#
n = 313#
m = 1014#
list = [[0,0],[0,9],[1,7]]15#
output: 1516#
explanation:17#
starting from (0,0), fix 0, then go to (0,9) to fix 1 and go from (0,9) to next line (1,9), then go to (1,7) to fix 3, then go back to (1,9) and go to (2,9).
1819
20class
solution:
21"""
22@param n: 行
23@param m: 列
24@param badcomputers: 壞電腦
25@return: 答案
26"""
2728
defmaintenance(self, n, m, badcomputers):
29 dp = [[0, 0] for i in range(n)] #
每一行作為乙個子問題,用該陣列儲存該行的左邊解和右邊解的步數
30 matrix = [[0 for i in range(m)] for j in range(n)] #
初始化乙個n*m的元素為0的矩陣31#
壞電腦矩陣元素設為1
32for node in
badcomputers:
33 matrix[node[0]][node[1]] = 1
34for i in
range(n):
35 right = -1 #
右邊距36 left = -1 #
左邊距37
for j in
range(m):
38if matrix[i][j] !=0:
39 right = j #
max(most_right, j)
40 left = max(left, m - 1 -j)
41if i ==0:
42if right == -1:
43 dp[0][0] =0
44 dp[0][1] = m - 1
45else
:46 dp[0][0] = 2 *right
47 dp[0][1] = m - 1
48continue
49if right == -1: #
如果該行沒有壞電腦,直接進入下一行
50 dp[i][0] = dp[i - 1][0] + 1
51 dp[i][1] = dp[i - 1][1] + 1
52else: #
取當前行相對上一行的最優解
53 dp[i][0] = min(dp[i - 1][0] + 2 *right,
54 dp[i - 1][1] + m - 1) + 1
55 dp[i][1] = min(dp[i - 1][1] + 2 *left,
56 dp[i - 1][0] + m - 1) + 1
57return min(dp[n - 1][0], dp[n - 1][1])
5859
60if
__name__ == '
__main__':
61#n = 362#
m = 1063#
list = [[0, 0], [0, 9], [1, 7]]
64 n = 3
65 m = 10
66 list = [[0, 3], [1, 7], [1, 2]]
67 solution =solution()
68 res =solution.maintenance(n, m, list)
69print(res)
電腦光碟機不讀盤 維修電腦找電腦維修君
深圳電腦維修,30分鐘極速維修 現場維修 蘋果電腦維修 蘋果台式電腦,筆記本,一體機,ipad 1.蘋果筆記本維修主機板故障 開機黑屏,開機掉電,主機板進水,開機花屏白屏藍屏,開機機器有 異響,開機機器有燒焦氣味等 2.蘋果筆記本維修螢幕故障 屏裂,閃屏,花屏,暗屏,紅屏等 3.蘋果筆記本維修鍵盤故...
電腦主機板維修 新科空調維修報價
深圳市冷之峰製冷機電裝置 為您詳細解讀esrwxi新科空調維修 的相關知識與詳情,常見毛病情況 一台科龍kfr 35gwa分體空調致冷實際效果差乃至不致冷。常見毛病分析 帶公用東西查驗壓工做壓力,覺察工做壓力從啟動時的漸漸降低到,隨後正在至中間垂垂地往返晃悠,且電流量漸漸公升高,後邊造冷壓縮機過壓庇...
電腦維修知識總結
win10裝win7 改bios啟動模式uefi為legacy,硬碟格式改為mbr,uefi下裝要改gpt win7裝win10.mbr分割槽或者是gpt分割槽格式都可以安裝,只要格式化為ntfs就可以安裝了。驅動出錯 不知道還有什麼 在我的電腦右鍵,先開啟裝置管理器,檢視有沒有感嘆號,用驅動工具裝...