• 青蛙过河


    总时间限制:1000ms 内存限制: 65536kB

    描述

    有一条河,左边一个石墩(A区)上有编号为1,2,3,4,…,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示。n只青蛙要过河(从左岸石墩A到右岸石墩B),规则为

    (1)石墩上可以承受任意多只青蛙,荷叶只能承受一只青蛙(不论大小);

    (2)青蛙可以:A→B(表示可以从A跳到B,下同),A→C,A→D,C→B,D→B,D→C,C→D;

    (3)当一个石墩上有多只青蛙时,则上面的青蛙只能跳到比它大1号的青蛙上面。

    你的任务是对于给出的h,k,计算并输出最多能有多少只青蛙可以根据以上规则顺利过河?

    示意图

    输入

    最多能有多少只青蛙可以根据以上规则顺利过河

    输出

    这个正整数的位数。

    样例输入

    2 3

    样例输出

    16


    ac代码

    /*
    /*
    @File     :   frog_problem.cpp
    @Time     :   2020/04/14 14:58:14
    @Desc     :   青蛙过河
    */
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    unsigned long long get_max_frogs(int h, int k)
    {
        /**
         * 如果没有石礅,先将k个青蛙分批到k个荷叶上,
         * 将k+1个青蛙移动到最右,最后依次移动k个青蛙
         */
        if (h == 0) return k+1;
        /**
         * 否则,将k个青蛙移到第n-1个石礅
         * 最后将n个石礅上青蛙依次移动到最右
         */
        else return 2*get_max_frogs(h-1,k);
    }
    int main(int argc, char const *argv[])
    {
        int h, k;
        cin >> h >> k;
        cout << get_max_frogs(h,k) << endl;
        system("pause");
        return 0;
    }
    
  • 相关阅读:
    网络安全之数字签名
    python爬取并分析淘宝商品信息
    循环与分支——python
    线性相关与线性无关
    linux之文件传输协议(FTP)与本地用户测试
    递归下降语法分析
    MySQL:索引
    一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
    Tomcat的部署、虚拟主机及优化
    二叉树深度
  • 原文地址:https://www.cnblogs.com/levarz/p/12781573.html
Copyright © 2020-2023  润新知