当前位置:   article > 正文

(蓝桥杯)算法训练ALGO-11 瓷砖铺放 (递归) C++_铺砖c++

铺砖c++

 

问题描述

  有一长度为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,代表地板的长度

输出格式

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

样例输入

4

样例输出

5
  1. #include<iostream>
  2. using namespace std;
  3. int n,num=0;
  4. void sum(int x){
  5. int a=x;
  6. //符合题意,刚好铺满地面
  7. if(a==n){
  8. num++;
  9. return;
  10. }
  11. else if(a>n) return;
  12. //增加一块长度为1的瓷砖
  13. sum(a+1);
  14. //增加一块长度为二的瓷砖
  15. sum(a+2);
  16. }
  17. int main(){
  18. cin>>n;
  19. //起初未铺瓷砖时,已铺长度为零
  20. sum(0);
  21. cout<<num;
  22. return 0;
  23. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号