面试题 17.16. 按摩师
思路:递归只有选和不选两种选择。用数组存储已计算过的值。
class Solution {
public:
int massage(vector<int>& nums) {
size = nums.size();
dp = (int*) malloc(size*sizeof(int));
fill(dp, dp+size, -1);
return fun(nums, 0);
}
private:
int size;
int *dp;
int fun(vector<int>& nums, int x){
if(x>=size) return 0;
if(dp[x]!=-1) return dp[x];
dp[x] = max(nums[x]+fun(nums,x+2), fun(nums,x+1));//要这个数,不要这个数
return dp[x];
}
};
笔记:动态申请数组
int *dp;
dp = (int*)malloc(10*sizeof(int));//二维数组就两个*
.........
double **p = ( double** )malloc( 10 * sizeof( double* ) );
for( i = 0; i < 20; ++i )
p[i] = ( double* )malloc( 20 * sizeof( double ) );
..........
p[5][6] = 20.68;