luogu 1028

递推。

f[i]表示把i进行处理可得的数的个数。

枚举头部接什么数可得递推式f[i]=1+∑f[j] (j<=i/2)。

其实可以用前缀和优化,不过这题的数据范围没这个必要。

#include"cstdio"
int main()
{
    int n,f[1001];
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        f[i]=1;
        for(int j=1; j<=i/2; j++) f[i]+=f[j];
    }
    printf("%d",f[n]);
    return 0;
}

 

posted @ 2018-01-24 12:43  TrassBlose  阅读(71)  评论(0编辑  收藏  举报