ALGO-11 算法训练 瓷砖铺放(递归)
问题描述
有一长度为N(1 <= N <= 10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限要将这个长度为Ñ的地板铺满,一共有多少种不同的铺法?
例如,长度为4的地面一共有如下5种铺法:
4 = 1 + 1 + 1 + 1
4 = 2 + 1 + 1
4 = 1 + 2 + 1
4 = 1 + 1 + 2
4 = 2 + 2
编程用递归的方法求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格式
输出一个数,代表所有不同的瓷砖铺放方法的总数
样例输入
4
样例输出
五
代码解析:
当台阶为1的时候只有1种情况台阶为2的时候有两种情况两个1m瓷板或者一个2米瓷板
代码:
#include <iostream>
使用namespace std;
int count = 0;
int fun(int n)
{
如果(n == 0)返回0;
如果(n == 1)返回1;
如果(n == 2)返回2;
返回fun(n-1)+ fun(n-2);
}
int main()
{
int n;
cin >> n;
count = fun(n);
cout << count;
返回0;
}
使用namespace std;
int count = 0;
int fun(int n)
{
如果(n == 0)返回0;
如果(n == 1)返回1;
如果(n == 2)返回2;
返回fun(n-1)+ fun(n-2);
}
int main()
{
int n;
cin >> n;
count = fun(n);
cout << count;
返回0;
}
还没有评论,来说两句吧...