算法训练 瓷砖铺放

旧城等待, 2022-09-26 14:57 219阅读 0赞

问题描述

  有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?
  例如,长度为4的地面一共有如下5种铺法:
  4=1+1+1+1
  4=2+1+1
  4=1+2+1
  4=1+1+2
  4=2+2
  编程用递归的方法求解上述问题。

输入格式

  只有一个数N,代表地板的长度

输出格式

  输出一个数,代表所有不同的瓷砖铺放方法的总数

样例输入

  1. 4

样例输出

  1. 5

思路:

  1. 列举12两种可能,如果长度超出n就是达到递归的边界,等于n就是一种解

代码:

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int cnt=0,n;
  5. void dg(int s)
  6. {
  7. if (s>n)
  8. return ;
  9. if (s == n)
  10. cnt++;
  11. dg(s+1);
  12. dg(s+2);
  13. }
  14. int main()
  15. {
  16. cin>>n;
  17. dg(0);
  18. cout<<cnt;
  19. return 0;
  20. }

发表评论

表情:
评论列表 (有 0 条评论,219人围观)

还没有评论,来说两句吧...

相关阅读

    相关 算法训练 - 瓷砖 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板满,一共有多少种不同的法?

    问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?   

    相关 算法训练 瓷砖

    问题描述   有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?   

    相关 算法训练 排序

    > 问题描述 >   编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。 >   输入格式:输入只有一行,即三个整数,中间用空格隔开。 >  

    相关 [算法]苹果问题

    1. 在说放苹果问题之前,先说下斐波那契数列递归求解时的时间复杂度。 由公式f(n) = f(n - 1) + f(n - 2)很容易画出其递归树: ![201806051

    相关 算法训练

    问题描述   有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?