这怎么优化啊
#include <bits/stdc++.h>
using namespace std;
long long x,y,z;
long long f(long long i)
{
if(i<=x+2)
return 1;
return f(i-1)+f(i-x-2)*y;
}
int main() {
cin>>x>>y>>z;
cout<<f(1+z);
return 0;
}
这怎么优化啊
#include <bits/stdc++.h>
using namespace std;
long long x,y,z;
long long f(long long i)
{
if(i<=x+2)
return 1;
return f(i-1)+f(i-x-2)*y;
}
int main() {
cin>>x>>y>>z;
cout<<f(1+z);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
long long x,y,z;
map<long long, long long> memo;
long long f(long long i)
{
if(memo.count(i)) return memo[i]; /
if(i<=x+2)
return 1;
long long result = f(i-1) + f(i-x-2)*y;
memo[i] = result;
return result;
}
int main() {
cin>>x>>y>>z;
cout<<f(1+z);
return 0;
}