简单改一下打家劫舍的一的代码就行了
#include #include using namespace std; int maxT(int a, int b) { if (a > b) { return a; } return b; } int RobberHouse(vector vec) { vector dp(vec.size(), 0); dp[0] = vec[0]; dp[1] = maxT(vec[0], vec[1]); for (int i = 2; i < vec.size(); i++) { dp[i] = maxT(vec[i] + dp[i - 2], dp[i - 1]); } return dp.back(); } int RobberHouseII(vector vec) { vector vec1(vec.begin(), vec.end() - 1); vector vec2(vec.begin() + 1, vec.end()); return maxT(RobberHouse(vec1), RobberHouse(vec2)); } int main() {
cout << RobberHouse({ 2,7,9,3,1 }) << endl; cout << RobberHouseII({ 2,3,2 }) << endl; system(“pause”); return 0; }