(1)递归算法:递归算法有两个关键点:(1)递归出口;(2)递归过程
void hanoi(int n, char one, char two, char three)
/* 将n个盘子从one 座借助two座, 移到three 座*/
{
if (n= =1)
move (one, three); //递归出口,如果递归出口不对,则会耗尽系统栈内存
else { //递归过程
hanoi(n-1, one, three, two); //第一步,将one上面的n-1个盘子,通过three移动到two
move(one, three); //第二步,将one上面的那个盘子直接移动到three上
hanoi(n-1, two, one, three); //第三步,将two上面的n-1个盘子,通过one移动到three上面
}
}
main()
{
int m;
printf(input the number of diskes:);
scanf(“%d”,&m);
printf(“The step to moving %3d diskes:
”,m);
hanoi(m,’A’,’B’,’C’);
}
(2)贪心算法
(3)动态规划