《递归第推练习》D - 汉诺塔系列1

递归调用——单向汉诺塔 递归是程序设计最有力的表达方法之一。 阅读详情
  • 原题

    Description
    n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系:
    n=m+p+q
    a1>a2>…>am
    b1>b2>…>bp
    c1>c2>…>cq
    计算所有会产生的系列总数。

    Input
    包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数目N<30。

    Output
    对于每组数据,输出移动过程中所有会产生的系列总数。

  • 思路
    递推,列出前几项:
    1:3
    2:9
    3:27
    4:81
    5:243
    得到规律:
    f[i]=3*f[i-1]

  • AC代码

#include<bits/stdc++.h>
using namespace std;
long long f[30]={1,3,9,27,81};
void Init()
{
    for(int i=5;i<30;i++)
        f[i]=3*f[i-1];
}

int main()
{
    int t,n;
    cin>>t;
    Init();
    while(t--)
    {
        cin>>n;
        cout<<f[n]<<endl;
    }
    return 0;
}
汉诺塔系列专题(逐步理解递推递归) 最裸的汉诺塔: 第一步:把n-1个盘子移到B柱 第二步:把第n个柱子移到C柱 第三步:把n-1个盘子移到C盘 第一步和第三步是一样的,如果只需要求最少的步数,可以不管中间步骤,用递推直接写出即可 核心代码 a[1]=1; for(int i=2;i     a[i]=2*a[i-1]+1; 最裸的弄懂当然是远远不够的,现在我们来看一些变形 hdu2175 输入n,m, 阅读详情

相关推荐

汉诺塔问题的递归算法演示

汉诺塔,又称河内塔,是一个经典的数学问题,也是递归算法教学中常见的案例。它由三个基座和一定数量的圆盘组成,圆盘大小不一,按大小顺序叠放在其中的一个基座上,形成塔状。汉诺塔的游戏规则简单明了:一次只能移动一个圆盘,且在移动过程中,任何时候大圆盘不能叠在小圆盘上面。在汉诺塔问题中,参与者需要制定一套移动规则,从而将所有的圆盘从起始基座移动到目标基座上。为了解决这个问题,我们需要遵循一些基本规则:每次只能移动最顶层的圆盘;圆盘只能从一个基座移动到另一个基座上;

weixin_29155599的博客 1151

汉诺塔Ⅶ(递归算法)

n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系 : n=m+p+q a1>a2>...>am b1>b2>...>bp c1>c2>...>cq ai是A柱上的盘的盘号系列,bi是B柱上的盘的盘号系列, ci是C柱上的盘的盘号系列,最初目标是将A柱上的n个盘子移到C盘. 给出1个系列,判断它是否是在正确的移动中产生的系列. 例1:n=3 3 2 1 是正确的

m0_52262443的博客 350

D语言编写《汉诺塔》

D语言编写《汉诺塔》,有兴趣的看看。<br>我也就是赶赶时髦,证明咱们也能用D写点什么。<br>后续会发布更复杂的游戏。

递推递归-D-汉诺塔系列1

D、 题目: 描述 n 个盘子的汉诺塔问题的最少移动次数是2 ^ n-1,即在移动过程中会产生2 ^ n 个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即柱各子从下往上的大小仍保持如下关系: N  = M + p + q  A1> A2> ...>上午 B1> B2> .. 。> bp  c1> c2> ...> cq  计算

叹久 423

运放专题:运算放大电路中的相位补偿

的方法

五花带点肉 2万+

逆变器并联--下垂控制引入虚拟阻抗

说明传统下垂控制的缺点、分析虚拟阻抗的原理和实现方法

weixin_58670090的博客 1万+

递推递归练习--D(汉诺塔问题)

题目简述:n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上。 解题思路: 纯找规律的题(对我来说是这样的)。这个题不是求需要多少步完成汉诺塔问题,是中间又多少系列。通过给出的输入输出找规律……(如图),找到是3的i次方。所以写出程序……算是比较水吧。 Sample Inp

sdau164185的博客 435

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 387

汉诺塔系列1

Problem Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系 : n=m+p+q a1>a2>...>am b1>b2>...>bp c1>c2>...>cq 计算所有会产生的系列总数。 Inp

xiaoxinxinev5的博客 925

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

十五天学会Autodesk Inventor,看完这一系列就够了(七),工程图纸

不管哪种绘图软件,二维或三维绘图,最终均需要转换成工程图纸,才能交给现场人员进行制作,这是任一产品图都要经历的过程。那本章开始,我们一起看一下Inventor是如何实现工程图纸?

Crazydoubao的博客 4914

汉诺塔(Hanoi)问题归纳总结

汉诺塔问题递归、非递归算法、启发式算法解决汉诺塔,双色汉诺塔...

qq_53162179的博客 4万+

Oracle19c安装,基本配置教程(超详细)

安装有出错的风险,卸载也是比较麻烦的,所以先提前设置一个还原点,在windows中的步骤如下,如果对自己有信心,可以直接跳过该部分开始安装oracle在设置中进入创建还原点的界面开始创建还原点上面已经成功创建了还原点,如果安装oracle时出现问题,自己也无法解决,恢复到安装之前即可,恢复步骤如下经过上面的步骤,Oracle我们就能够正常使用了,我们就使用自己在sql plus里面创建的账号即可,创建的表会默认存放在我们自己创建的表空间里面。

秃头披风侠的博客 7万+

递归经典问题之汉诺塔详解(c语言实现)

汉诺塔(Tower of Hanoi)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。——摘自百度百科 相信对于汉诺塔问题大家或多或少都了解到过,这是一道经典的递归问题。乍一看似...

弋墨尘的博客 1万+

GLMM(广义线性混合模型)原理以及分析步骤

广义线性混合模型(GLMM)是生态与进化研究中处理非正态数据的定制化工具,能同时分析固定效应和随机效应。它通过链接函数连接响应变量与预测因子,支持二项分布、泊松分布等非正态数据。研究流程包括:明确分析目标(固定效应影响与随机效应方差)、选择合适变量与分布、数据验证、参数估算(需根据模型复杂度选择PQL、拉普拉斯近似等方法)及模型优化(检验过离散与残差,通过信息准则或假设检验筛选最优模型)。GLMM能有效解决传统方法无法处理的"伪重复"和推广性问题,为复杂生物数据提供可靠分析框架。

wewil_lwin的博客 4993

别再手动调时间了!用Windows自带的tzutil命令,1分钟搞定时区错误

本文介绍了如何使用Windows自带的tzutil命令快速解决时区错误问题。通过简单的命令行操作,用户可以一键切换时区、查看全球时区代码库,并实现自动化时区同步。相比传统GUI设置,tzutil更可靠且高效,特别适合企业环境批量部署。

weixin_42531494的博客 315

汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI

汉诺塔 汉诺塔II hdu1207: 先说汉若塔I(经典汉若塔问题),有三塔,A塔从小到大从上至下放有N个盘子,现在要搬到目标C上, 规则小的必需放在大的上面,每次搬一个,求最小步数。这个问题简单,DP:a[n]=a[n-1]+1+a[n-1],先把 上面的n-1个放在B上,把最大的放在目标C上,再把N-1个放回到C上即可。 网上的一种最优解法如下:(1)将x(1 #inc

Coding A World 3765

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

递归递推练习 D 汉诺塔系列1

描述: Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系: n=m+p+q a1>a2>...>am b1>b2>...>bp c1>c2>...>cq 计算所有会产生的系列总数。

554

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

递归递推练习D汉诺塔系列1

Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系: n=m+p+q a1&gt;a2&gt;...&gt;am b1&gt;b2&gt;...&gt;bp c1&gt;c2&gt;...&gt;cq 计算所有会产生的系列总数。...

z846666407 278

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

青蛙跳台阶和汉诺塔非递归实现及汉诺塔详解,附源码

一、分治法是什么? 分治法,顾名思义就是分而治之。把一个父问题看成2个或者多个子问题的求解,再把子问题看成更小的子问题求解,知道最后的子问题可以简单直接求解。 注意:1、父问题必须和子问题有相同性质。 2、子问题的规模是再不断缩小的。 汉诺塔和青蛙跳台阶以及快速排序等就是采用了分治法。 二、青蛙跳台阶问题 题目说明:一只青蛙可以一次跳 1 级台阶或一次跳 2 级台阶,例如: 跳上第一级台阶只有一种跳法:直接跳 1 级即可. 跳上两级台阶,有两种跳法: 每次跳 1 级,跳两次; 或者一次跳 2 级. 问要跳

weixin_45029051的博客 1747

递归 —— 三柱汉诺塔和四柱汉诺塔

三层汉诺塔

11:00 啦 6047

【杭电oj】2064 - 汉诺塔III(递归,汉诺塔)

点击打开题目 汉诺塔III Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14440    Accepted Submission(s): 6650 Problem Description 约19世

wyg1997 1819

递归经典例题——汉诺塔

一个方法在执行过程中调用自身, 就称为 “递归”.递归相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式.例如, 我们求 N!起始条件: N = 1 的时候, N!为 1. 这个起始条件相当于递归的结束条件.递归公式: 求 N!, 直接不好求, 可以把问题转换成 N!将原问题划分成其子问题,注意:子问题必须要与原问题的解法相同递归出口。

weixin_65476629的博客 700

C语言汉诺塔数列(循环版,递归版)

据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。第 1 项为 1,表明移动 1 片圆盘的汉诺塔需 1 步;第 2 项为 3,表明移动 2 片圆盘的汉诺塔需 3 步;算法思路:该算法的思路为,通过分析题目的情况,然后可以得到的这个汉诺塔的公式为2^n - 1,对于汉诺塔的总层数。说明:参数 index 为索引号(正整数),函数值为汉诺塔数列第 index 项的值。

jakelihua 1950

算法:图解汉诺塔问题(递归求解)

汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 下面来对汉诺塔问题进行解释和建立模型 这是示意图,a是起始柱,c是目标柱,b起到中转作用 在进行转移操作时,都必须确保大盘在小盘下面,且每次只能移动一个圆盘,最终c柱上有所有的盘子且也是从上到下按从小到大的顺序。 下面我用图来描.

OceanStar的博客 4745
上一篇: 《递归递推练习》C - 递归的函数
下一篇: 《递归递推练习》E - 养兔子
qinglys
博客等级 码龄10年 0粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值