题目解释
题目说的可能有一点点歧义
解释一下就是,给定了一个自然数N
可以进行三种操作
1.不操作
2.将一个小于等于N/2的自然数X加到N的左边
3.以新加的自然数X为基准,取一个自然数Y<=X/2,加在XN(2操作做完后的新数)左侧,是它成为YXN以此类推;
思路
很经典的递推
写出方程的话就是
ans(0)=1;
ans(n)=ans(0)+ans(k);(k=1,2...n/2(向下取整))
代码

int cc[1005];
int main()
{
    int n;
    cin >> n;
    cc[0] = 1;
    for (int i = 1; i <= 1000; i++)
    {
        int sum = 0;
        for (int j = 1; j <= i / 2; j++)
        {
            sum += cc[j];
        }
        cc[i] = cc[0] + sum;
    }
    cout << cc[n];
    return 0;
}

如果不理解原理,可以自己写一下,推一下。模拟一下递推的过程就知道了。
tips:n>=4时,将第一次加的数相同的结果写在一起,比较好看出规律.
例:
n=1

1

n=2

2
12

n=3

3
13

n=4
14

24
124 //很明显,对于这两行,将尾部的4去掉,就是n=2时的结果.

4