https://www.zhihu.com/question/23995189
https://www.zhihu.com/question/39948290
//DP 6步骤
//1. 确定子问题f(k): 前k个房间中所能取得的最大值
//2. dp数组和下标含义:dp[i]: 前i个房间所f(i)
//3. 状态转移:dp[n] = max{第n个房间偷,不偷第n个房间}=max{dp[n-2]+Hn,dp[n-1]}
//4. 遍历顺序(自顶向下[很少]还是自底向上): 从0->n
//5. 初始值:dp[0],dp[1]
//6. 优化节点【空间复杂度】