#include<stdio.h> #include<malloc.h> #include<string.h> int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } /* LeetCode第198题 */ /* dp思想:每次判断是加上这个数更多还是不加更多。 max(dp[i-2]+nums[i],dp[i-1]) */ int rob(int* nums, int numsSize){ if(numsSize == 1) return nums[0]; if(numsSize == 2) return nums[0] > nums[1] ? nums[0] : nums[1]; int i; int res1 = nums[0]; int res2 = nums[0] > nums[1] ? nums[0] : nums[1]; int res = 0; int temp; for(i = 2; i < numsSize; i++) { temp = res1 + nums[i]; res = temp > res2 ? temp : res2; res1 = res2; res2 = res; } return res; }