题意:加入集合的条件是:1.任意两个数不相连,2.在满足1个条件下不能再将之前组成的集合加入新的元素。看了题解明白的意思,既然不能在已有的基础的上再加,所以我们每次都加能加了,所以对于已经选到n,只能加n+2,或者n+3,就行了,不用考虑n+4,那是n+2的事情,为了能够递推出答案,所以f(n)=f(n-2)+f(n-3)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 100;
int f[MAXN];
int main(){
f[0] = 1;
f[1] = 1;
f[2] = 2;
for (int i = 3; i < MAXN; i++)
f[i] = f[i-2] + f[i-3];
int n;
while (scanf("%d",&n) != EOF){
printf("%d\n",f[n]);
}
return 0;
}