递归

牛客这边可以过,但是一本通那边会超时

#include<iostream>

using namespace std;

int res = 1;

void fun(int k)
{    
    for(int i = 1; i <= k >> 1; i ++)
    {
        res ++;        
        fun(i);
    }    
}

int main()
{
    int n;
    cin >> n;
    fun(n);
    cout << res;
    
    return 0;
}

递推

#include<bits/stdc++.h>

using namespace std;

int a[1010];

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= 1000; i ++) a[i] = 1;//初始化 每个数的自身都算一个答案
    for(int i = 2; i <= n; i ++)
        for(int j = 1; j <= i >> 1; j ++)
            a[i] += a[j];
            
    cout << a[n];
    
    return 0;
}