【C/C++】汉诺塔问题

简介: ## 汉诺塔问题相传来源于印度教的天神汉诺。据说汉诺在创造地球时建了一座神庙,神庙里面有三根柱子,汉诺将64个直径大小不同的盘子按照从大到小的顺序依次放置在第一个柱子上,形成金塔(即汉诺塔)。天神汉诺每天让庙里的僧侣们将第一根柱子上的64个盘子借助第二根柱子全部移动大第三根柱子上,并说:“当这64个盘子全部移动到第三根柱子上时,世界末日也就要到了!”这就是著名的汉诺塔问题。

## 汉诺塔问题相传来源于印度教的天神汉诺。据说汉诺在创造地球时建了一座神庙,神庙里面有三根柱子,汉诺将64个直径大小不同的盘子按照从大到小的顺序依次放置在第一个柱子上,形成金塔(即汉诺塔)。天神汉诺每天让庙里的僧侣们将第一根柱子上的64个盘子借助第二根柱子全部移动大第三根柱子上,并说:“当这64个盘子全部移动到第三根柱子上时,世界末日也就要到了!”这就是著名的汉诺塔问题。

ac468cb0b15706c65d2060504aad96eb_52d332e886b73a98c47ab1b54dda4eea.png


#include<stdio.h>
#include<math.h> 
void move(char X, char Y)
{
    printf("%c->%c\n",X,Y);
}
int hanoi(int n,char x,char y,char z)
{
  if(n==1)
  move(x,z);
  else
  {
  hanoi(n-1,x,z,y); 
  move(x,z);  
  hanoi(n-1,y,x,z); 
    }
    return 0;
}
int main(void)
{
   int i,t;
   char a,b,c;
   printf("请输入a柱上汉诺塔的盘子个数:");  
   scanf("%d",&i);
   printf("汉诺塔盘的运行路径:\n");  
   hanoi(i,'a','b','c');
   t=pow(2,i)-1;
   printf("\n运行路径总数为:%d\n",t);  
   return 0;  
}


程序解析:

421416a4702f7ae52c6e3aa47ce2e4fb_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5byg5pm66LaF5ZCWLg==,size_20,color_FFFFFF,t_70,g_se,x_16.png

输入i=4:

66eb59108b35f3ecf10ce91759313c48_99ddc96fe8aa467bba867232e8f4d4e1.png

输出路径:

92e3dc944368f957ed0bff6bd2c7c6be_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5byg5pm66LaF5ZCWLg==,size_11,color_FFFFFF,t_70,g_se,x_16.png

输出路径总数:

86ef03ab228d93b7718103627be91bbc_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5byg5pm66LaF5ZCWLg==,size_20,color_FFFFFF,t_70,g_se,x_16.png


目录
相关文章
|
2月前
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
159 0
|
2月前
|
Linux 数据安全/隐私保护
Linux权限管理
Linux权限管理是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:所有者(owner)、群组(group)和其他(others)。 每个文件和文件夹都有一个所有者,这是创建该文件或文件夹的用户。所有者拥有最高的权限,可以对文件和文件夹进行更改、读取和删除。群组是一组用户,他们可以共享文件和文件夹的权限。其他用户是除所有者和群组以外的其他用户。 Linux使用三个主要的权限:读、写和执行。读权限允许用户查看文件或文件夹的内容,写权限允许用户更改文件或文件夹的内容,执行权限允许用户运行文件或文件夹中的程序。是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:
18 1
|
17天前
|
网络协议 Linux 数据安全/隐私保护
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
|
26天前
|
安全 Linux Shell
【Linux】权限管理
【Linux】权限管理
18 5
|
2月前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
2月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
2月前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
【5月更文挑战第24天】 在Linux操作系统中,文件系统权限管理是维护系统安全和用户数据隔离的关键机制。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他类别的读、写、执行权限。我们将分析权限位的具体含义,如何通过命令行工具修改权限,以及权限掩码(umask)的作用。此外,我们还将讨论文件系统权限在实际应用中的常见问题及其解决方案,帮助读者构建更为安全且高效的Linux工作环境。
|
2月前
|
存储 Linux 数据安全/隐私保护
【Linux修行路】权限管理
【Linux修行路】权限管理
|
2月前
|
Linux 数据安全/隐私保护
Linux权限管理
Linux权限管理是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:所有者(owner)、群组(group)和其他(others)。 每个文件和文件夹都有一个所有者,这是创建该文件或文件夹的用户。所有者拥有最高的权限,可以对文件和文件夹进行更改、读取和删除。群组是一组用户,他们可以共享文件和文件夹的权限。其他用户是除所有者和群组以外的其他用户。 Linux使用三个主要的权限:读、写和执行。读权限允许用户查看文件或文件夹的内容,写权限允许用户更改文件或文件夹的内容,执行权限允许用户运行文件或文件夹中的程序。是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:
24 4
|
2月前
|
Linux 数据安全/隐私保护
【Linux笔记】用户和权限管理基本命令介绍
【Linux笔记】用户和权限管理基本命令介绍