网站建设资讯

NEWS

网站建设资讯

汉诺塔算法代码java,汉诺塔递归算法代码

求一个汉诺塔的JAVA代码

public class Hannoi {

为玉环等地区用户提供了全套网页设计制作服务,及玉环网站建设行业解决方案。主营业务为成都网站制作、成都做网站、外贸营销网站建设、玉环网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

public static void main(String[] args) {

int nDisks = 3;

moveDish(nDisks, 'A', 'B', 'C');

}

private static void moveDish(int level, char from, char inter, char to) {

if (level == 1) {

System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);

} else {

moveDish(level - 1, from, to, inter);

System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);

moveDish(level - 1, inter, from, to);

}

}

}

用java实现汉诺塔的程序是啥呀?

其实不知道你到底是想要代码还是要什么

给你帖的示范代码吧:

汉诺塔问题的递归Java语言实现

public

class

Hanoi

{/**

*

*

@param

n

*

盘子的数目

*

@param

origin

*

源座

*

@param

assist

*

辅助座

*

@param

destination

*

目的座

*/

public

void

hanoi(int

n,

char

origin,

char

assist,

char

destination)

{

if

(n

==

1)

{

move(origin,

destination);

}

else

{

hanoi(n

-

1,

origin,

destination,

assist);

move(origin,

destination);

hanoi(n

-

1,

assist,

origin,

destination);

}

}

//

Print

the

route

of

the

movement

private

void

move(char

origin,

char

destination)

{

System.out.println("Direction:"

+

origin

+

"---"

+

destination);

}

public

static

void

main(String[]

args)

{

Hanoi

hanoi

=

new

Hanoi();

hanoi.hanoi(3,

'A',

'B',

'C');

}

}

java实现汉诺塔的代码,求注释,具体到每一行代码,急求,,,

这样应该可以了 如果还有那个地方不懂的,建议你研究下汉诺塔算法

import java.io.BufferedReader;//引入IO包中的BufferedReader

import java.io.IOException;//引入IO包中的IO异常处理

import java.io.InputStreamReader;//引入IO包中的InputStreaReader

public class Hinoi { //主类

static int m=0;//定义移动的次数

//主程序入口——main方法

public static void main(String[] args) {

//创建BufferedReader对象,InputStream输入流

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入盘子的个数:");

try {

int sl = Integer.parseInt(bf.readLine().toString());//接收总盘子个数

toMove(sl,"A","B","C");//调用移动方法 A——C

} catch (NumberFormatException e) {捕获NumberFormatException异常

// TODO Auto-generated catch block

e.printStackTrace();//打印异常

} catch (IOException e) {//捕获IOException异常

// TODO Auto-generated catch block

e.printStackTrace();//打印异常

}

System.out.println("总共移动了:"+m+" 次数");//打印移动次数

}

//移动方法

private static void toMove(int sl, String one, String two,String three)

{

if(sl==1){//如果只有一个盘子,则直接移动到C柱

System.out.println("盘子"+sl+" 从 "+one+"----"+three);

}else{//如果总盘数大于1,则递归调用移动方法

//把所有的数量为sl-1的盘子全部从A移到到B(C作为一个过渡),好提供一个最下面的位置给最大盘子到C;

toMove(sl-1,one,three,two);

System.out.println("盘子"+sl+" 从 "+one+"----"+three);

//把所有的剩余的盘子从B移动到C(A作为一个过渡)

toMove(sl-1,two,one,three);

}

m++;

}

}

怎样用Java编写汉诺塔程序

package Hanoi;

import java.awt.*;

import java.io.*;

import java.awt.event.*;

public class Hanoi {

public static void main(String args[]) throws IOException {

Hanoi aa = new Hanoi();

aa.go();

}

public void go() throws IOException {

int n;

BufferedReader buf;

buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入盘数:");

n = Integer.parseInt(buf.readLine());

Hanoi hanoi = new Hanoi();

hanoi.move(n, 'A', 'B', 'C');

}

public void move(int n, char a, char b, char c) {

if (n == 1) {

System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);

} else {

move(n - 1, a, c, b);

System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);

move(n - 1, b, a, c);

}

}

}

JAVA汉诺塔

import java.awt.*;

public class TowerPoint //公共类TowerPoint

{

int x,y; //定义2个int类型的变量

boolean 有盘子; //定义一个boolean类型的变量

Disk 盘子=null; //初始化一个对象"盘子"并赋值为空

HannoiTower con=null; //初始化一个HannoiTower类的对象"con"并赋值为空

public TowerPoint(int x,int y,boolean boo) //构造函数,有3个参数,x,y,boo

{

this.x=x; //将参数赋给当前x

this.y=y; //将参数赋给当前y

有盘子=boo; //将boo赋给"有盘子"

}

public boolean 是否有盘子() //定义一个返回boolean类型的方法"是否有盘子"

{

return 有盘子; //返回boolean类型的"有盘子"

}

public void set有盘子(boolean boo) //set方法,并且参数为boolean

{

有盘子=boo; //将boo赋给有盘子

}

public int getX() //取得x方法

{

return x; //返回x

}

public int getY()//取得y方法

{

return y; //返回y

}

public void 放置盘子(Disk 盘子,HannoiTower con) //定义一个有2个参数的"放置盘子"方法。参数是Disk类和HannoiTower类

{

this.con=con; //当前con等于参数con

con.setLayout(null); //调用on对象的方法setLayout,并设置为空

this.盘子=盘子; //当前盘子等于参数盘子

con.add(盘子); //con对象的add方法,加入"盘子"对象

int w=盘子.getBounds().width; //定义并给一个int类型的w变量一个值,值为"盘子.getBounds().width"

int h=盘子.getBounds().height; //定义并给一个int类型的h变量一个值,值为"盘子.getBounds().height"

盘子.setBounds(x-w/2,y-h/2,w,h);//调用"盘子"对象的setBounds方法,并把传递值

有盘子=true;//boolean类型的对象"有盘子"等于true

con.validate(); //调用con对象的validate方法

}

public Disk 获取盘子() //定义"获取盘子"方法,方法返回Disk对象

{

return 盘子; //返回盘子

}

}

-----------------------另外说一下,楼主太抠门了!!!!!!!!只给5分-----------------------

java中汉诺塔的算法问题

class

HanRuoTa

{

static

long

s=0;

public

static

void

main(String

args[])

{

int

n

=3;

System.out.println("汉诺塔层数为"

+

n);

System.out.println("移动方案为:"

);

hanoi(n,

'a',

'b',

'c');

System.out.println("需要移动次数:"+s);

}

static

void

hanoi(int

n,

char

a,

char

b,

char

c)

{

if

(n

0)

{

hanoi(n

-

1,

a,

c,

b);

move(a,

b);

hanoi(n

-

1,

c,

b,

a);

s++;

}

}

static

void

move(char

x,

char

y)

{

System.out.println(x

+

"-"

+

y

+

"\t");

}

}

运行结果:

汉诺塔层数为3

移动方案为:

a-b

a-c

b-c

a-b

c-a

c-b

a-b

需要移动次数:7


网站名称:汉诺塔算法代码java,汉诺塔递归算法代码
网页网址:http://njwzjz.com/article/hdhjdo.html