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

迈不过友情╰ 2023-07-07 03:44 49阅读 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,代表地板的长度
输出格式
  输出一个数,代表所有不同的瓷砖铺放方法的总数
例子

样例输入
4
样例输出
5

思路

基础题,用简单递归即可轻松解决。设置好递归出口就行了。

代码呈上:

  1. #include <stdio.h>
  2. int num=0;
  3. int n;
  4. void f(int a)
  5. {
  6. if(a==n)
  7. {
  8. num++;
  9. return;
  10. }
  11. if(a>n)
  12. {
  13. return;
  14. }
  15. f(a+1);
  16. f(a+2);
  17. }
  18. int main ()
  19. {
  20. scanf("%d",&n);
  21. f(0);
  22. printf("%d",num);
  23. return 0;
  24. }

发表评论

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

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

相关阅读

    相关 算法训练 - 瓷砖 长度N(1<=<=10)地板给定不同瓷砖长度1长度2数目这个长度N地板一共多少不同

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

    相关 算法训练 瓷砖

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