leetCode | House Robber
简单的动态规划
状态方程:dp[i]=max{dp[i-1],dp[i-2]+a[i]}.//其实就是分为选择a[i]和不选择a[i]两种情况,取最大值。
代码如下:
#define MAX 1000 #define max(a,b) ( (a)>(b)?(a):(b) ) int dp[MAX]={0}; int rob(int* a, int n) { int i; dp[0]=0; dp[1]=a[0]; for(i=1;i<n;i++){ dp[i+1]=max(dp[i],a[i]+dp[i-1]); } return dp[n];//这里对于下标要小心点 }
Any problems contact me .