n=2^t-1
(n为次数,t为碟子数)
有四个碟子
所以n=2^4-1=15
选B
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。面对庞大的数字(移动圆片的次数)(2^64-1),看来,众僧们耗尽毕生精力也不可能完成金片的移动。
后来,这个传说就演变为汉诺塔游戏:
1.有三根杆子A,B,C。A杆上有若干碟子
2.每次移动一块碟子,小的只能叠在大的上面
3.把所有碟子从A杆全部移到C杆上
经过研究发现,汉诺塔的很简单,就是按照移动规则向一个方向移动金片:
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C
需要连接数据库,做一个DBconnection的类,大致就是先取得驱动,然后设置用户名和密码。
connection——》statement--》然后执行SQL语句
1, 定义的变量,要放在输出的前面,(有些编译器会报错,要先定义变量在使用输出)2.、
你定义的变量名和函数名相同会报错,把int hnt;换成其他的变量就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
inthnt(intx);
intmain()
{
inta;
printf(汉诺塔游戏\n);
scanf(%d,&a);
printf(需要移动%d次,hnt(a));
return0;
}
inthnt(intx)
{
inthnt1;
if(x>1)
hnt1=2*hnt(x-1)+1;
else
hnt1=1;
returnhnt1;
}
汉诺塔的移动次数定值为2^n -1。递归算法是:
void move(int count,int needle1,int needle3,int needle2)
{
if(count>0)
{
move(count-1,needle1,needle2,needle3);
move(count-1,needle2,needle3,needle1);
}
}
Copyright © 2024 冲浪手游网 滇ICP备2024020316号-78