1、这道题我想到是递推了,但是刚开始我没有想清楚f的含义,输出了f【n】,自然出错。f【n】应该是“以n为结尾”的集合个数,只与n-2和n-3有关(n-4的话中间还能插入一个数),最后可能以n结尾,也可能以n-1结尾,但不可能以n-2结尾(想一想,为什么),所以输出f【n】+f【n-1】!
#include<cstdio>
using namespace std;int main(){
int n,f[80];
f[0]=0;
f[1]=1;
f[2]=1;
for(int i=3;i<=76;i++)
f[i]=f[i-3]+f[i-2];
while(scanf("%d",&n)==1){
printf("%d\n",f[n]+f[n-1]);
}
return 0;
}