Experimento del curso de análisis y diseño de algoritmos: algoritmo recursivo para resolver el problema de la torre de Hanoi

Índice de contenidos de los artículos de la serie.

Capítulo 1 Análisis y diseño de algoritmos Algoritmo recursivo


Índice de contenidos de los artículos de la serie.


Prefacio

  1. Dominar las ideas básicas y los métodos de implementación de algoritmos recursivos.
  2. Comprender las ideas de diseño de algoritmos en casos experimentales.

1. Descripción de la tarea

Problema de la Torre de Hanoi. En el estado inicial, todos los discos están en el pilar B y deben moverse al pilar A.

2. Proceso experimental

Todos conocemos el famoso problema de la Torre de Hanoi, entonces, ¿cómo lo implementamos en código?

primer paso

Podemos definir una función hanoi() e insertar tres variables en ella, estas tres variables representan el pilar A, el pilar B y el pilar C respectivamente:

void hanoi(int n,char a,char b,char c)
{//把n个盘子从a柱移动到c柱
	if(n>0)
	{
		hanoi(n-1,a,c,b);//n-1个盘子从a移动到b
		printf("%c->%c\n",a,c);//1个盘子从a移动到c
		hanoi(n-1,b,a,c);//n-1个盘子从b移动到c
	}
	
}  

 Paso 2

Al llamar a la función hanoi() en la función principal, se realiza la operación:

int main()
{
    int n = 3;    // 假设有3个盘子
    hanoi(n, 'B', 'A', 'C');
    return 0;
}

tercer paso

El código total es el siguiente:

#include <iostream>
using namespace std;
void hanoi(int n,char a,char b,char c)
{//把n个盘子从a柱移动到c柱
	if(n>0)
	{
		hanoi(n-1,a,c,b);//n-1个盘子从a移动到b
		printf("%c->%c\n",a,c);//1个盘子从a移动到c
		hanoi(n-1,b,a,c);//n-1个盘子从b移动到c
	}
	
}  

int main()
{
    int n = 3;    // 假设有3个盘子
    hanoi(n, 'B', 'A', 'C');
    return 0;
}

Resumir

Lo anterior es de lo que hablaré hoy. Este artículo solo presenta brevemente el algoritmo recursivo. Usando esta idea, podemos simplificar muchos problemas complejos.

Supongo que te gusta

Origin blog.csdn.net/m0_62422680/article/details/129778183
Recomendado
Clasificación