要求:
http://codeup.cn/problem.php?cid=100000625&pid=0
这题比较坑,需要输入多组数据而不是一组(习惯了CCF的一组= =)
而且不是计算前n个数的和,就是求出第n个数返回就可以了!
AC代码:
#include <stdio.h>
#include <string.h>
using namespace std;
int dp[100];
int F2(int n){
if(n == 0 ) return 0;
if(n == 1) return 1;
if(dp[n] != -1) return dp[n]; //如果dp[n]已经计算过,直接使用即可
else{
dp[n] = F2(n-1) + F2(n-2); //如果没算过,就计算并存入数组
return dp[n];
}
}
int main(){
int n1;
while(scanf("%d",&n1) != EOF){
memset(dp,-1,sizeof(dp));
printf("%d\n",F2(n1)); //输出第30-39的斐波那契数
}
return 0;
}
/*
30
*/