今天做了一道题,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