《猩球觉醒》中的高智商猩猩也会的汉诺塔问题,快来看看!!!(C语言,适合入门小白)

本文主要是介绍《猩球觉醒》中的高智商猩猩也会的汉诺塔问题,快来看看!!!(C语言,适合入门小白),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

汉诺塔问题

目标:借助B,将A的n个盘子移动到C

要求:

  1. 每次只能移动一次

  1. 必须上小下大,小的盘子能放在大的盘子上面,反之则不行

  1. 步骤最少

图解:(从小到大编为1,2,3,4……)

列举寻规律

当n=1时,需要1步;

当n=2时,需要3步;

当n=3时,需要7步;

当n=4时,需要15步;

如果你对数字敏感的话你很快发现规律:2^n-1;

如果你自己上手实操你会发现:第n个在C时必定有前n-1个在B上进行堆叠

而且我们知道:

三个柱子没有差异

从B往C堆叠的步骤等于从A往C堆叠的步骤;

所以可以得到一个等式:F(n)=2*F(n-1)+1;(F(n)是函数,表示移动n个盘子需要的步数;

+1是因为你要先移动第n个到C)

由此我们有两个方法:递归,数学公式法:等比数列

递归

对递归不熟悉的可以看看我的另一篇文章《青蛙跳台阶问题——三种方法教会你(适合入门小白)

代码如图:

数学公式法:等比数列

F(n)=2*F(n-1)+1

两边同时+1

创建等比数列:F(n)+1=2(F(n-1)+1);

得到:F(n)=2^n-1

代码如图:

//数学公式法

#include<math.h>

int main()

{

int count = 0;//计算步骤

int n = 0;//n个盘子

scanf("%d", &n);

count = pow(2, n) - 1;

printf("count=%d\n", count);

return 0;

}

这篇关于《猩球觉醒》中的高智商猩猩也会的汉诺塔问题,快来看看!!!(C语言,适合入门小白)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/334795

相关文章

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1