#include<stdio.h>
#include<stdlib.h>
#define max(a,b) a>b?a:b
int N,*value,*cache;
int rec(int index);
int main(void){
scanf("%d",&N);
value=cache=(int*)malloc(sizeof(int)*(N+1));
for (int i=1;i<=N;cache[i]=-1,i++)
scanf("%d",&value[i]);
printf("%d",rec(N));
return 0;
}
int rec(int index){
if (index==1) return value[1];
if (index==2) return max(value[1],value[2]);
if (cache[index]!=-1) return cache[index];
else return cache[index]=max(rec(index-2)+value[index],rec(index-1));
}
输出的值总是-1,求解答!
第8行,应该是申请两块空间:
value=(int*)malloc(sizeof(int)*(N+1));
cache=(int*)malloc(sizeof(int)*(N+1));