
正文
汉诺塔java代码 汉诺塔java代码算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎么在汉诺塔java程序中加入背景音乐
我前几天刚好解决了。
public static void main(String[] args) {
URL cb = null;
File f = new File(".\\musics\\Endless.wav");//相对路径下的你的音乐文件名,好像只能播wav格式
try {
//先转换为uri.在转为url
cb = f.toURI().toURL();
} catch (MalformedURLException e) {
}
AudioClip aau;
aau = Applet.newAudioClip(cb);
aau.loop();
}
}
相关问答
Q1: JAVA程序归递算法求解汉诺塔问题
首先你需要有下面这两个意识:
1.一个函数对于其它函数来说相当于一个盒子,他封装了其中的内容,其它函数只知道给它参数,然后得到它的结果。就好比一个做蛋糕的商店:我们只需要知道给钱,它就会给蛋糕。而我们不需要理解他们是怎么做出来的这个蛋糕。
2.调用的过程,就相当于上面例子中我们去买蛋糕的过程。谁说自己不能买自己店里的蛋糕呢?比如你是做蛋糕的,难道你不能买自己店里的蛋糕吗?函数的自我调用(递归?)也是这么回事情。
对于hanoi类里面,两个核心函数:
move(char getme, char purone):
这个函数的功能是:把getme最上面的盘子移动到purone位置,比如
move('A','B')就是把A柱子最上面那个盘子移动到B柱子的最上面。
hanoi(int n,char one,char two,char three):
这个函数的功能是:现在在柱子one上一共有n个盘子,这个函数能够通过two把它移动到three上面。
现在你了解了这两个函数设计的初衷,ok,我们来分别实现每个函数。
public void move(char getme,char purone)
{//请联系上面写的这个函数的功能来看:
c=c+1;//我们每移动一步,就计数一次
System.out.println(getme+"--"+putone+"搬盘次数为:"+c);
//这行使用输出来表明移动过了(事实上hanoi就是要让你详细说明移动过程,所谓“说明”,就是打印出每次的移动,那这里我们就把这次移动打印出来,这个没有任何问题吧?这个函数就是要把移动这件事情说出来,明白?
}
public void hanoi(int n,char one,char two,char three)
{//请回忆hanoi函数的功能,是要把one柱子上的前n个放到three柱子上:
if(n==1) //如果n==1,那也就是要把one柱子上最上面的那个移到three上面了,这就是move函数的作用,对吧?那就直接调用move(one,three)
move(one,three);
else{
//如果n1的话,那我们该怎么办?
分为三个步骤:
1.先想办法把one主子上的前n-1个移动到柱子two上
2.然后把one柱子上的第n个移动到柱子three上。
3.然后想办法把two柱子上的n-1个移动到three上。
对吧?现在你注意到第1步和第3步是不是就是hanoi这个函数的功能能够实现的呢?回答显然是肯定的,下面就是这三步。
hanoi(n-1,one,three,two); //把one柱子上的n-1个通过three移动到two上。
move(one,three); //把one主子上最上面那个(注意,上面一步已经把前n-1个移动到two上面了,one柱现在最上的那个就是第N个)
hanoi(n-1,two,one,three);//把two柱子上的n-1个移动到three柱子上。
}
}
解释到这里,main函数里面的调用应该也就很明白了吧?
a.hanoi(m,'A','B','C');
把'A'柱子上的m个盘子通过'B'柱子全部移动到'C'上面的步骤。
解释起来很容易,想得多了也就慢慢明白了,最难的是如何设计一个递归出来。这个和数学里面的递推公式很相似(事实上其来源就是递推公式),想必你肯定知道递增函数把? An = An-1 + 5(A0 = 0 );这个条件能够唯一确定一个数列。
那现在你把它写成函数呢?
int A(int n) {
if(n == 0) {
return 0;
} else {
return A(n -1) + 5;
}
}
调用A(n)就能返回An的值。明白?
多想想,多练练,大家都是这么过来的:)祝好运
Q2: 三个柱,三个圈,那个java题怎么做
汉诺塔:
使用递归算法
伪代码:
func move(n,a,b,c) //将n层从a经过b挪到c
if n = 1
输出 '把' a '上汉诺塔java代码的盘挪到' c
else
move(n-1,a,c,b)
输出 '把' a '上汉诺塔java代码的盘挪到' c
move(n-1,b,a,c)
主函数
move(n,'a','b','c')
Q3: java汉诺塔不可逆向问题!,
public class J_Hanoi
{
public static void mb_hanoi(int n, char start, char temp, char end)
{
if (n=1)
System.out.println("将盘从" + start + "移到" + end);
else
{
mb_hanoi(n-1, start, end, temp);
System.out.println("将盘从" + start + "移到" + end);
mb_hanoi(n-1, temp, start, end);
} // if-else结构结束
} // 方法mb_hanoi结束
public static void main(String args[ ])
{
mb_hanoi(3, 'S', 'T', 'E');
} // 方法main结束
} // 类J_Hanoi结束
课本上面抄汉诺塔java代码的 汉诺塔java代码,
汉诺塔java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于汉诺塔java代码算法、汉诺塔java代码的信息别忘了在本站进行查找喔。






