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