给出自然数 n,要求按如下方式构造数列:只有一个数字 n 的数列是一个合法的数列。在一个合法的数列的末尾加入一个自然数,但是这个自然数不能超过该数列最后一项的一半,可以得到一个新的合法数列。
请你求出,一共有多少个合法的数列。两个合法数列 a,b 不同当且仅当两数列长度不同或存在一个正整数
#include<iostream>
using namespace std;
int f[1001]={0};
void s(int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=i/2;j++)
f[i]=f[i]+f[j];
f[i]=f[i]+1;
}
}
int main()
{
int n;
cin >> n;
s(n);
cout << f[n];
return 0;
}