一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房。问从如图位置爬到n号蜂房,有多少种爬行路线?
输入描述
一行,一个整数n。
输出描述
一个整数,表示爬行路线总数。
样例输入 1
3
样例输出 1
3
样例输入 2
4
样例输出 2
5
提示
数据范围与提示
1≤n≤30
样例1,n=3时:1—>3;2—>3;1—>2—>3,合计3种路线。
样例2,n=4时:1—>2—>4;2—>4;1—>3—>4;2—>3—>4;1—>2—>3—>4,合计5种路线。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int a[1002][1002];
int len = 1;
void fun(int temp)
{
for (int i = 0; i <= len - 1; i++)
{
a[temp][i] += a[temp - 1][i] + a[temp - 2][i];
if (a[temp][i] >= 10)
{
a[temp][i + 1] += a[temp][i] / 10;
a[temp][i] %= 10;
}
}
if (a[temp][len])len++;
}
int main()
{
int m, n;
cin >> m >> n;
a[1][0] = 1;
a[2][0] = 2;
for (int i = 3; i <= n-m; i++)
{
fun(i);
}
//cout << a[n - m][0] << endl;
for (int i = len-1; i>=0; i--)
{
cout << a[n - m][i];
}
cout << endl;
return 0;
}