真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java漢諾塔代碼理解,編寫漢諾塔程序

java漢諾塔遞歸問題

就是把end賦值給temp,temp賦值給end啊,如果寫出來這段代碼還是不容易的,不是進(jìn)入mb_hanoi(2,'S','E','T',)這個方法中繼續(xù)執(zhí)行是進(jìn)入上面的方法,mb_hanoi(2,'S','E','T',)是調(diào)用方法,方法在上面

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、興安ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的興安網(wǎng)站制作公司

你順著看就行了

java實現(xiàn)漢諾塔的代碼,求注釋,具體到每一行代碼,急求,,,

這樣應(yīng)該可以了 如果還有那個地方不懂的,建議你研究下漢諾塔算法

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;//定義移動的次數(shù)

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

public static void main(String[] args) {

//創(chuàng)建BufferedReader對象,InputStream輸入流

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

System.out.println("請輸入盤子的個數(shù):");

try {

int sl = Integer.parseInt(bf.readLine().toString());//接收總盤子個數(shù)

toMove(sl,"A","B","C");//調(diào)用移動方法 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+" 次數(shù)");//打印移動次數(shù)

}

//移動方法

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

{

if(sl==1){//如果只有一個盤子,則直接移動到C柱

System.out.println("盤子"+sl+" 從 "+one+"----"+three);

}else{//如果總盤數(shù)大于1,則遞歸調(diào)用移動方法

//把所有的數(shù)量為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漢諾塔(河內(nèi)塔)問題。解釋一下漢諾塔為3時怎么想

你把1,2盤看成一個特殊的盤。所以現(xiàn)在n=2,當(dāng)n=2時,需先把1盤移動到B塔中,把1-3步一起看,作用即把特殊盤移動至B。

然后把3盤移動至C塔,即第4步。

最后,把特殊盤移動到C塔上,同樣把5-7步一起看,達(dá)到的效果即把特殊盤移動至C盤,完成!!

等于4的時候 ,其實就是把123盤看成特殊盤!同樣的道理,因為漢諾塔是遞歸實現(xiàn)的,明白之后很簡單。

求一個漢諾塔的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中漢諾塔的算法問題

class

HanRuoTa

{

static

long

s=0;

public

static

void

main(String

args[])

{

int

n

=3;

System.out.println("漢諾塔層數(shù)為"

+

n);

System.out.println("移動方案為:"

);

hanoi(n,

'a',

'b',

'c');

System.out.println("需要移動次數(shù):"+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");

}

}

運(yùn)行結(jié)果:

漢諾塔層數(shù)為3

移動方案為:

a-b

a-c

b-c

a-b

c-a

c-b

a-b

需要移動次數(shù):7

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) //構(gòu)造函數(shù),有3個參數(shù),x,y,boo

{

this.x=x; //將參數(shù)賦給當(dāng)前x

this.y=y; //將參數(shù)賦給當(dāng)前y

有盤子=boo; //將boo賦給"有盤子"

}

public boolean 是否有盤子() //定義一個返回boolean類型的方法"是否有盤子"

{

return 有盤子; //返回boolean類型的"有盤子"

}

public void set有盤子(boolean boo) //set方法,并且參數(shù)為boolean

{

有盤子=boo; //將boo賦給有盤子

}

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

{

return x; //返回x

}

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

{

return y; //返回y

}

public void 放置盤子(Disk 盤子,HannoiTower con) //定義一個有2個參數(shù)的"放置盤子"方法。參數(shù)是Disk類和HannoiTower類

{

this.con=con; //當(dāng)前con等于參數(shù)con

con.setLayout(null); //調(diào)用on對象的方法setLayout,并設(shè)置為空

this.盤子=盤子; //當(dāng)前盤子等于參數(shù)盤子

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);//調(diào)用"盤子"對象的setBounds方法,并把傳遞值

有盤子=true;//boolean類型的對象"有盤子"等于true

con.validate(); //調(diào)用con對象的validate方法

}

public Disk 獲取盤子() //定義"獲取盤子"方法,方法返回Disk對象

{

return 盤子; //返回盤子

}

}

-----------------------另外說一下,樓主太摳門了?。。。。。。?!只給5分-----------------------


當(dāng)前題目:java漢諾塔代碼理解,編寫漢諾塔程序
網(wǎng)頁地址:http://weahome.cn/article/hsgged.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部