#include<stdio.h>
#include<iostream>
using namespace std;
void Hanoi(int n, char A, char B, char C);//5.递归汉诺塔
int Divide(int n, int m, int len);//6.整数分划
void Output(int num[], int len);
int divide[100] = {0};
int main ()
{
Hanoi(3, 'A', 'B', 'C');
cout << Divide(5, 4, 0);
}
void Hanoi(int n, char a, char b, char c)
{
if(n == 0)
return;
Hanoi(n - 1, a, c, b);
printf("remove %d from %c to %c\n", n, a, b);
Hanoi(n - 1, c, b, a);
}
int Divide(int n, int m, int len)
{
if(n < 0 && m < 0)
{
printf("error");
return 0;
}
else if(n == 1 && m > 1)
{
divide[len] = 1;
Output(divide, len + 1);
return 1;
}
else if(n >= 0 && m == 1)
{
if(n == 0)
{
Output(divide, len);
}
else
{
divide[len] = 1;
Divide(n - 1, m, len + 1);
}
return 1;
}
else if(n
[算法设计与分析]3.1.2递归设计要点(汉诺塔+整数的分划)
最新推荐文章于 2022-03-17 10:30:52 发布