递归算法。
#include<bits/stdc++.h>
using namespace std;
int n;
int s[1005];
int f(int m){
if(s[m]) return s[m]; //记忆化搜索,如果算过方案数,直接加上
int sum=1; //算上自己的那一种
for(int i=1;i<=m/2;i++){ //题意,加到一半
sum+=f(i); //递归
}
s[m]=sum; //记忆化搜索
return sum;
}
int main(){
cin>>n;
f(n); //调用函数
cout<<s[n]; //输出对应
return 0;
}
这个博客介绍了如何使用递归算法解决特定问题,并结合记忆化搜索优化算法性能。通过一个C++代码示例展示了如何计算加到一半的方案数,从而减少重复计算,提高效率。
407

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



