唉。。。还是看了一下讨论区才猛然醒悟。
取任意多个数,那么包括取0个数!!!
推导过程:手算
设f[i]表示到当前这个数为止,所有的种类
一开始以为是f[i]+=fj然后发现错了,于是毅然手算
推出了:f[1]=1,f[2]=2,f[3]=4.f[4]=7,f[5]=12,f[6]=20,f[7]=33
得出:f[i]=f[i-1]+f[i-2]+1,然后发现与样例对不上了,交了一遍->0
然后到讨论区一看,说是斐波那契数列,然后一看自己的推导。。。发现每一项都少了1(就是什么都不取的那种情况)
然后应该都会了吧
f[i]=f[i-1]+f[i-2]
#include<bits/stdc++.h>
using namespace std;
int n;
unsigned long long f[57]={0,2,3};
int main(){
cin>>n;
for(int i=3;i<=n;i++)
f[i]=f[i-1]+f[i-2];
cout<<f[n]<<endl;
return 0;
}