原题:https://www.vijos.org/p/1130
时间:2014.1.24
类型:递推 || 递归(+记忆化)
源码:递推:
#include<iostream>
using namespace std;
int main()
{
int a[1001],n;
cin>>n;
a[1]=1;
for(int s=2;s<=n;s++)
{
a[s]=0;
for(int i=1;i<=s/2;i++)
{
a[s]+=a[i];
}
a[s]++;
}
cout<<a[n];
return 0;
}
递归+记忆化:
#include<iostream>
using namespace std;
long a[1000];
long count(long n)
{
if(a[n]!=0) { return a[n]; }
else
{
a[n]=1;
for(long i=1;i<=n/2;i++)
{
a[n]+=count(i);
}
return a[n];
}
}
int main()
{
long n;
cin>>n;
cout<<count(n);
return 0;
}
最后状态:AC
总结:花了点时间理解题意