最开始写的dfs超时了。。。。
#include<stdio.h>
int m,count;
void dfs(int n){
if(n>m) return ;
if(n==m) count++;
else{
dfs(n+1);
dfs(n+2);
}
}
int main(){
int N;
scanf("%d",&N);
while(N--){
count=0;
scanf("%d",&m);
dfs(1);
printf("%d\n",count);
}
return 0;
}
然后列举几个数后发现就是斐波拉切数列。。。
#include<stdio.h>
int A[41];
int main(){
int N,i;
A[1]=1;A[2]=1;
for(i=3;i<=40;i++)
A[i]=A[i-1]+A[i-2];
scanf("%d",&N);
while(N--){
int m;
scanf("%d",&m);
printf("%d\n",m==1?0:A[m]);
}
return 0;
}