这是两个经典的代码
题目链接 nyoj
直接附上代码参考吧,忘记链接是那个题目了。
/* 一般的代码*/
/*#include<iostream>
#include<cstdio>
using namespace std;
int Fib[25];
int fib(int n)
{
Fib[0] = 0;
Fib[1] = 1;
Fib[2] = 1;
for(int i = 3; i <= n; ++i)
{
Fib[i] = Fib[i - 1] + Fib[i - 2];
}
return Fib[n];
}
int main()
{
int ncase, n, ans;
scanf("%d", &ncase);
while(ncase--)
{
scanf("%d", &n);
ans = fib(n);
printf("%d\n", ans);
}
return 0;
}*/
/*利用滚动数组的方法*/
#include<cstdio>
using namespace std;
int Fib[3];
int fib(int n)
{
Fib[1] = 0;
Fib[2] = 1;
for(int i = 2; i <= n; ++i)
{
Fib[0] = Fib[1];
Fib[1] = Fib[2];
Fib[2] = Fib[0] + Fib[1];
}
return Fib[2];
}
int main()
{
int ncase, n, ans;
scanf("%d", &ncase);
while(ncase--)
{
scanf("%d", &n);
ans = fib(n);
printf("%d\n", ans);
}
return 0;
}