首先,我们来看一下这道题的规律
a[1]=1;
a[2]=a[1]+1;//即小于等于二分之一自身的数的满足题意的个数+自身
......
a[n]=a[n/2]+...a[1]+1;
如此以来复杂度为O(n^2)的算法就完成了,如下所示:
include<bits/stdc++.h>
using namespace std;
int n,num,a[1001];//定义题目范围内的数组
int main()
{cin>>n;//输入 for(register int i=1;i<=n;i++)//遍历1-n的数组 { for(register int j=1;j<=i/2;j++)//定义1-n的数组 { //注意这里每个数定义的舒缓,满足条件的是小于等于自身的数,即i/2 a[i]+=a[j];}a[i]++;//加上自身 }cout<<a[n];//输出