lintcode 826電腦維修

2022-05-25 05:51:08 字數 3154 閱讀 7613

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).

1

#乙個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)

826.py

電腦光碟機不讀盤 維修電腦找電腦維修君

深圳電腦維修,30分鐘極速維修 現場維修 蘋果電腦維修 蘋果台式電腦,筆記本,一體機,ipad 1.蘋果筆記本維修主機板故障 開機黑屏,開機掉電,主機板進水,開機花屏白屏藍屏,開機機器有 異響,開機機器有燒焦氣味等 2.蘋果筆記本維修螢幕故障 屏裂,閃屏,花屏,暗屏,紅屏等 3.蘋果筆記本維修鍵盤故...

電腦主機板維修 新科空調維修報價

深圳市冷之峰製冷機電裝置 為您詳細解讀esrwxi新科空調維修 的相關知識與詳情,常見毛病情況 一台科龍kfr 35gwa分體空調致冷實際效果差乃至不致冷。常見毛病分析 帶公用東西查驗壓工做壓力,覺察工做壓力從啟動時的漸漸降低到,隨後正在至中間垂垂地往返晃悠,且電流量漸漸公升高,後邊造冷壓縮機過壓庇...

電腦維修知識總結

win10裝win7 改bios啟動模式uefi為legacy,硬碟格式改為mbr,uefi下裝要改gpt win7裝win10.mbr分割槽或者是gpt分割槽格式都可以安裝,只要格式化為ntfs就可以安裝了。驅動出錯 不知道還有什麼 在我的電腦右鍵,先開啟裝置管理器,檢視有沒有感嘆號,用驅動工具裝...