算法分析:一个数可分为自身(+1)和自身除以2的数所带的次数,适合用递推从前往后推,比如说4可以分为2和1和自身所带表的数相加
1
2 12
3 13
414 24 124
注意:自身也要加1,若不足3直接输出
#include<bits/stdc++.h>
using namespace std;
int a[1009]={1,1,2,2};
int js(int n){
int i=3;
if(n==1) return 1;
if(n==2||n==3) return 2;//若不足直接输出
while(1){
i++;
for(int j=0;j<=i/2;j++){
a[i]=a[i]+a[j];
}//注意自身也要加1
if(i==n){
return a[i];
}
}
}
int main(){
int s;
cin>>s;
cout<<js(s);
}