爬楼梯
Time Limit: 1000 ms
Memory Limit: 65535 kB
Description
一个楼梯有n级,每次走1级或者2级,从底走到顶一共有多少种走法。
Input
输入的第一行是整数T(0<T<=1000),表示测试数据的组数。每一组测试数据只有一行即楼梯级数n,两者之间有一个空格。0<n<=30。
Output
对应每组输入,输出走法数。
Sample Input
2
3
5
Sample Output
3
8
假设f[i]为有i层阶梯时的方法数,所以可以得知f[n]= f[n-1] + f[n-2]。
同时f[1] = 1,f[0] = 1,所以整个序列即为斐波拉契序列。
#include <cstdio>
int f[31];
int main()
{
FILE * fin, * fout;
fin = fopen("1.std.in", "r");
fout = fopen("1.std.out", "w");
f[0] = 1;
f[1] = 1;
for ( int i = 2; i <= 30; i++ )
{
f[i] = f[i-1] + f[i-2];
}
int t, n;
fscanf(fin, "%d", &t);
while ( t-- )
{
fscanf(fin, "%d", &n);
fprintf(fout, "%d\n", f[n]);
}
return 0;
}