今天做了一道题,codeforces283B,感觉收获蛮多的,第一次接触了记忆化搜索,对于dfs的认知更进了一层吧
抛砖引玉:
给你一个n,表示从1~n个数,输入x(x<=n),问x+(x+1)…+n的和,即后缀和,傻子都知道怎么做,最简单的莫过于高斯公式了,但是我们需要从简单问题抽象出更深层次的东西—记忆化搜索
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int n,ans[100],vis[100];
void dfs(int x){
if(vis[x]) return;
if(x==n) ans[x]=n;
vis[x]=1;
if(x+1<=n){
dfs(x+1);
if(ans[x+1]!=-1) ans[x]=ans[x+

通过一道codeforces283B题目,作者首次接触到记忆化搜索,并对其有了深入理解。记忆化搜索的关键在于动态规划(dp)与状态记录(vis)的结合,避免重复计算。通过回溯更新答案(ans),实现从未知到已知状态的高效过渡。
最低0.47元/天 解锁文章
1682

被折叠的 条评论
为什么被折叠?



