• 分巧克力【来源:CSDN线上编程挑战赛】——递归,费波那奇数列,迭代


    /*======================================================================
    儿童节快到了,班长想要给班上的每个同学给一个巧克力,
    巧克力的形状是一个宽为2,长为n的长方形,由于巧克力太贵,
    班长就想把这个大块的巧克力分成许多 1*2(宽*长)的小块巧克力,
    这样每个人都能得到一份1*2的巧克力,现在给定巧克力的长为
    正整数n(1<=n<=91),请你判断对于这 个2*n的巧克力有多少种不同的分法?

    分析:
    这个其实就是考查费波纳奇数列。
    考虑第一块的分法有如下两种选择:(横放或者竖放)

    假设用f(n)表示长度为n的时候所有不同分法的数量,则
    f(1)=1;
    f(2)=2;
    f(n)=f(n-1)+f(n-2)………………n>=3
    题目输入n计算并输出f(n),所以可以直接用递归去解。
    再看看,这个和费波那奇数列是一个样的,用迭代其实也可解决的。 ========================================================================
    */
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int n,i;
     5     long n1=1;
     6     long n2=2;
     7     long c=n1+n2;
     8     scanf("%d",&n);
     9     if(n==1) printf("%ld
    ",n1);
    10     else if(n==2) printf("%ld
    ",n2);
    11     else
    12     {
    13         for(i=4;i<=n;i++)
    14         {
    15             n1=n2;
    16             n2=c;
    17             c=n1+n2;
    18         }
    19         printf("%ld
    ",c);
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    Hihocoder-小Hi的烦恼
    Python包下载与离线安装
    Shell输出颜色设置
    MySQL主从配置
    MySQL初始化与用户配置
    [转]常用 GDB 命令中文速览
    搭建github静态博客
    树莓派上手
    vim安装与配置
    数组,看了你就懂了!
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3524523.html
Copyright © 2020-2023  润新知