• 算法训练 递归 瓷砖铺放


    问题描述
      有一长度为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 
     3 int n, num = 0;
     4 
     5 void fun(int x)
     6 {
     7     int a = x;
     8     //刚好铺满地面
     9     if (a == n)
    10     {
    11         num++;
    12         return;
    13     }
    14     else if (a > n)
    15     {
    16         return;
    17     }
    18     //加一块长度为1的砖
    19     fun(a + 1);
    20     //加一块长度为2的砖
    21     fun(a + 2);
    22 }
    23 
    24 int main()
    25 {
    26     scanf("%d", &n);
    27     fun(0);
    28     //最初没有铺砖 总长度为0
    29     printf("%d", num);
    30     return 0;
    31 }
    
    
    
     
  • 相关阅读:
    精准医疗
    生物信息学的研究过程
    蛋白质结构预测
    CP
    基因组大小控制因素
    RNA组研究困难
    输入input文本框的 U+202D和U+202C是什么
    ruby-get-url-query-params
    golang send post request
    nginx location配置
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12667732.html
Copyright © 2020-2023  润新知