暴搜与记忆化搜索
这里的暴搜模板有一点动态规划的意思,在求解完成任务的方法数上尤为好用。记忆化就是简单地用二维数组记录该点是否被搜过,保存搜的结果。
建议记忆数组初始化为-1,避免结果为0时会误以为没有搜过。例为洛谷P1057
#include<bits/stdc++.h>
using namespace std;
int n, m; int f[31][31];
int bp(int s, int k)
{
if (k == m)
{
f[s][k]=s == 1 ? 1 : 0;
return f[s][k];
}
if (f[s][k]!=-1)return f[s][k];
f[s][k] = bp(s % n + 1, k + 1) + bp(s - 1 > 0 ? s - 1 : n, k + 1);
return f[s][k];
}
int main()
{
memset(f, -1, sizeof(f));
cin >> n >> m;
cout<<bp(1, 0)<<endl;
return 0;
}