考虑暴力递归求解的情况:
f(i)=min(a(i),f(i-1),f(i-2),...,f(1))
由于只要参数相同,f()函数的返回值是一样的,因此导致了大量的重复计算,所以我们可以记忆下来。
1 #include2 #include 3 #include 4 using namespace std; 5 int n,a[5001],memory[5001]; 6 int f(int cur) 7 { 8 if(memory[cur]!=-1) return memory[cur]; 9 int res=a[cur];10 for(int i=1;i