为什么TLE,哪位大佬帮帮忙
2025-08-16 17:02:43
发布于:浙江
37阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int dfs(int n){
if(n == 1 || n == 2) return 1; //终止条件
return dfs(n-1) + dfs(n-2); //递归式
}
int main(){
int n;
cin >> n;
cout << dfs(n);
return 0;
}
全部评论 1
你猜猜为什么叫记忆化
2025-08-16 来自 浙江
0啥意思
2025-08-16 来自 浙江
0你的解法是 的,通过不了。你应该使用一个数组,在得到答案时立即存储,下次递归到这时不用再递归下去,直接查询即可。
2025-08-16 来自 浙江
0#include <iostream> #include <cstdio> using namespace std; long long f[65]; long long fib(int n){ if(n == 1 || n == 2) return 1; if(f[n]) return f[n]; f[n] = fib(n - 1) + fib(n - 2); return f[n]; } int main(){ ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int n; cin >> n; cout << fib(n); return 0; }
2025-08-16 来自 浙江
0
有帮助,赞一个