打家劫舍系列DP之打家劫舍II

2021-10-07 03:28:45 字數 883 閱讀 6545

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。

給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

示例 1:

輸入:[2

,3,2

]輸出:

3解釋: 你不能先偷竊 1 號房屋(金額 =

2),然後偷竊 3 號房屋(金額 =

2), 因為他們是相鄰的。

示例 2:

輸入:[1

,2,3

,1]輸出:

4解釋: 你可以先偷竊 1 號房屋(金額 =

1),然後偷竊 3 號房屋(金額 =

3)。 偷竊到的最高金額 =1+

3=4 。

題目鏈結

#include

using

namespace std;

int arr[

10000];

int help1[

10000];

//不拿第乙個

int help2[

10000];

//拿第乙個

int n;

intmain()

cout<<

max(help1[n-1]

,help2[n-2]

);//拿第乙個最後結果為n-2,因為拿第乙個就不能取最後乙個,不拿第乙個結果為n-1,因為拿第乙個就可以取最後乙個

return0;

}

打家劫舍II

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝...

打家劫舍 II

相較於打家劫舍,算是乙個公升級版。既然是打家劫舍的公升級版,那我們就先找與原版之間的聯絡。做過打家劫舍之後我們知道狀態轉移方程是dp i max dp i 1 dp i 2 nums i 1 然後我們再來看這道題,由相鄰的一家變成了相鄰的兩家。那麼就相當於把原來的一條直線首尾相連變成了乙個環,這句話...

打家劫舍II

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝...