題目:
題目描述:
打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。
給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。
示例 1:
輸入: [1,2,3,1]
輸出: 4
解釋: 偷竊 1 號房屋 (金額 = 1) ,然後偷竊 3 號房屋 (金額 = 3)。
偷竊到的最高金額 = 1 + 3 = 4 。
示例 2:
輸入: [2,7,9,3,1]
輸出: 12
解釋: 偷竊 1 號房屋 (金額 = 2), 偷竊 3 號房屋 (金額 = 9),接著偷竊 5 號房屋 (金額 = 1)。
偷竊到的最高金額 = 2 + 9 + 1 = 12 。
思路: 動態規劃。用dp表示每次到乙個房子時能獲得的最大金額。可以推出第一間房子是,dp[0]=num[0],第二間房子時,dp[1]=max(num[0],num[1]) 。之後都有動態規劃方程:dp[i] = math.max(sum[i-2]+a[i],sum[i-1])。
注意:這裡dp記錄的是到此位置所能獲得的最大收益。也就是說在其他位置停止有可能獲得更大的金額。所以需要比較在那個房子時的金額最大。
**:
class solution
}return dp[k];
}}
leetcode動態規劃系列題解之二
暴力破解思路如下 1 先確定左上角的頂點,從左到右遍歷行列數 行數假設為m,列數假設為n 此時確定乙個矩形的左上角的頂點。記錄該頂點為 i,j 2 以 i,j 為矩形的左上角頂點,從j 1遍歷到n,如果點為0,則繼續,如果為1,則進行下一步。假設為1的點為 i,k 3 以 i,j 為矩形的左上角頂點...
題解 動態規劃
目錄全部分 這道題首先不考慮優化,我們該怎麼寫呢?顯然,這是乙個區間dp,我們可以利用記憶化搜尋來寫。1 定義狀態 dp i j 表示前i頭分j段的最小價值。2 狀態轉移方程 ans min ans,value x,i dfs dp i 1,left 1 這個狀態轉移方程和 這道題十分類似。3 然後...
leetcode之動態規劃小結(一)
最近學習動態規劃有點吃力,感覺這個東西雖然說是有套路的,但是剛開始的時候還是覺得難。現在網上也有很多講動態規劃的原理以及做法的,我就不多說了,主要還是以例子來記錄一下最近的心得。你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜...