题目链接https://www.luogu.com.cn/problem/P1028

最刚开始没看懂题┭┮﹏┭┮
题意大概就是根据找数放在自身的左边,然后求出最多能生成多少不同的组合(含本身)
其中让我没明白的就是题意说不超过原数,和上一个被拼接的一半。其实原数也代表上一个被拼接的
其实也就是一个递推问题,并不难

比如  6  可以  放 36  然后 136   或者   26  126  或者  16    然后本身
可以枚举1-n/2   f[1]=1   f[2]=f[1]+1  f[3]=f[1] +1   f[n]=f[1]+至f[n/2]+1
数据不打,好像可以打表=.=,代码本身就打了表      


#include<bits/stdc++.h>//万能头文件
using namespace std;
int n;
int f[1001];//存每一位数的种类
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){ //1-n的递推
        for(int j=1;j<=i/2;j++){
            f[i]+=f[j]; //每一位叠加,递推走起
        }
        f[i]++; //加上本身
    }
    cout<<f[n];//输出n的种类
    return 0;
}