递推、逆推算法
一、斐波那契数列
1. 基础知识
斐波那契数列是由 < 1 , 1 , 2 , 3 , 5 , 8 , . . . > <1, 1, 2, 3, 5, 8, ...> <1,1,2,3,5,8,...> 构成的一串无线序列,其基础项是前两项 1 1 1 和 1 1 1,从 3 3 3 开始求解方法为 f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(n) = f(n-1) + f(n-2) f(n)=f(n−1)+f(n−2)。
2. 审题
题目描述
斐波那契数列是这样的数列:数列的第一项和第二项都为 1 1 1,接下来的每一项都等于前面两项之和。给出一个整数 n n n,输出斐波那契数列前n项。
输入描述
一行,包含一个整数 n n n
输出描述
一行,斐波那契数列前 n n n 项,两个数字之间以一个空格隔开
样例1
输入
4
输出
1 1 2 3
提示
1 ≤ n ≤ 20 1 \le n \le 20 1≤n≤20
3. 参考答案
#include <iostream>
using namespace std;
long long n;
long long f[25] = {
0, 1, 1};
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
if (i <= 2)
{
cout << 1 << " ";
continue;
}
f[i] = f[i-1] + f[i-2];
cout << f[i] << " ";
}
return 0;
}
二、P2437 蜜蜂路线
1. 审题
题目描述
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 M M M 开始爬到蜂房 N N N, M < N M<N M<N,有多少种爬行路线?例如从蜂房 1 1 1 爬到蜂房 3 3 3,有两种方法,分别是 1 − 3 1-3 1−3; 1 − 2 − 3 1-2-3 1−2−3。
输入描述
一行,包含两个正整数 M M M 和 N N N,表示蜜蜂爬行的起点和终点。
输出描述
一个整数,表示爬行路线有多少种
样例1
输入
1 14
输出
377
提示
1 ≤ M < N ≤ 20 1 \le M