汉诺塔
应用方法:
(1)以C为媒介,将n-1个圆盘放到B柱中;
(2)将最底层的圆盘从A移动到C柱上;
(3)以A为媒介,将n-1层放到C柱中。
void move(char x,char y)
{
printf("%c -> %c\n", x, y);
}
void Hanoi(int n, char pos1, char pos2, char pos3)
{
if (n == 1)
{
move(pos1, pos3);
}
else
{
Hanoi(n - 1, pos1, pos3, pos2);//以C为媒介把n-1层放到B
move(pos1, pos3);// 把第n层放到C
Hanoi(n - 1, pos2, pos1, pos3);//再以A为媒介把n-1层放到C
}
}
void main()
{
int n = 0;
scanf("%d", &n);
Hanoi(n,'A','B','C');
system("pause");
return 0;
}
青蛙跳台
// 一只青蛙可以跳一级台阶,也可以跳两级。
// 求青蛙跳上n级的台阶总共有几种跳法
// 规律 f(n)=f(n-1)+f(n-2)
//n=1 ->1
//n=2 ->2
//n=3 ->3
//n=4 ->5
int qingwa(int x)// 递归方法
{
if (x > 2)
{
return qingwa(x - 1) + qingwa(x - 2);
}
else if (x == 2)
{
return 2;
}
else
return 1;
}
int qingwa(int n)// 常规方法
{
int a = 1;
int b = 2;
int c = 1;
if (n == 2)
{
return 2;
}
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
int ret = 0;
scanf("%d", &n);
ret = qingwa(n);
printf("%d\n", ret);
system("pause");
return 0;
}