欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java漢諾塔代碼解析,java編寫(xiě)漢諾塔代碼

java漢諾塔注解(急)

在構(gòu)造函數(shù)Hannoi(String s) 里面是做了一個(gè)界面,有個(gè)密碼框讓你輸入密碼,有個(gè)按鈕叫確定

10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有平塘免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

actionPerformed(ActionEvent e) 就是按下按鈕之后要做的事情

如果密碼錯(cuò)誤就在一個(gè)標(biāo)簽里面寫(xiě)密碼錯(cuò)誤,不然就開(kāi)始你所謂的漢諾塔

就這些

漢諾塔怎么寫(xiě)的你沒(méi)貼。。。lz真服了你了

JAVA程序歸遞算法求解漢諾塔問(wèn)題

首先你需要有下面這兩個(gè)意識(shí):

1.一個(gè)函數(shù)對(duì)于其它函數(shù)來(lái)說(shuō)相當(dāng)于一個(gè)盒子,他封裝了其中的內(nèi)容,其它函數(shù)只知道給它參數(shù),然后得到它的結(jié)果。就好比一個(gè)做蛋糕的商店:我們只需要知道給錢(qián),它就會(huì)給蛋糕。而我們不需要理解他們是怎么做出來(lái)的這個(gè)蛋糕。

2.調(diào)用的過(guò)程,就相當(dāng)于上面例子中我們?nèi)ベI(mǎi)蛋糕的過(guò)程。誰(shuí)說(shuō)自己不能買(mǎi)自己店里的蛋糕呢?比如你是做蛋糕的,難道你不能買(mǎi)自己店里的蛋糕嗎?函數(shù)的自我調(diào)用(遞歸?)也是這么回事情。

對(duì)于hanoi類里面,兩個(gè)核心函數(shù):

move(char getme, char purone):

這個(gè)函數(shù)的功能是:把getme最上面的盤(pán)子移動(dòng)到purone位置,比如

move('A','B')就是把A柱子最上面那個(gè)盤(pán)子移動(dòng)到B柱子的最上面。

hanoi(int n,char one,char two,char three):

這個(gè)函數(shù)的功能是:現(xiàn)在在柱子one上一共有n個(gè)盤(pán)子,這個(gè)函數(shù)能夠通過(guò)two把它移動(dòng)到three上面。

現(xiàn)在你了解了這兩個(gè)函數(shù)設(shè)計(jì)的初衷,ok,我們來(lái)分別實(shí)現(xiàn)每個(gè)函數(shù)。

public void move(char getme,char purone)

{//請(qǐng)聯(lián)系上面寫(xiě)的這個(gè)函數(shù)的功能來(lái)看:

c=c+1;//我們每移動(dòng)一步,就計(jì)數(shù)一次

System.out.println(getme+"--"+putone+"搬盤(pán)次數(shù)為:"+c);

//這行使用輸出來(lái)表明移動(dòng)過(guò)了(事實(shí)上hanoi就是要讓你詳細(xì)說(shuō)明移動(dòng)過(guò)程,所謂“說(shuō)明”,就是打印出每次的移動(dòng),那這里我們就把這次移動(dòng)打印出來(lái),這個(gè)沒(méi)有任何問(wèn)題吧?這個(gè)函數(shù)就是要把移動(dòng)這件事情說(shuō)出來(lái),明白?

}

public void hanoi(int n,char one,char two,char three)

{//請(qǐng)回憶hanoi函數(shù)的功能,是要把one柱子上的前n個(gè)放到three柱子上:

if(n==1) //如果n==1,那也就是要把one柱子上最上面的那個(gè)移到three上面了,這就是move函數(shù)的作用,對(duì)吧?那就直接調(diào)用move(one,three)

move(one,three);

else{

//如果n1的話,那我們?cè)撛趺崔k?

分為三個(gè)步驟:

1.先想辦法把one主子上的前n-1個(gè)移動(dòng)到柱子two上

2.然后把one柱子上的第n個(gè)移動(dòng)到柱子three上。

3.然后想辦法把two柱子上的n-1個(gè)移動(dòng)到three上。

對(duì)吧?現(xiàn)在你注意到第1步和第3步是不是就是hanoi這個(gè)函數(shù)的功能能夠?qū)崿F(xiàn)的呢?回答顯然是肯定的,下面就是這三步。

hanoi(n-1,one,three,two); //把one柱子上的n-1個(gè)通過(guò)three移動(dòng)到two上。

move(one,three); //把one主子上最上面那個(gè)(注意,上面一步已經(jīng)把前n-1個(gè)移動(dòng)到two上面了,one柱現(xiàn)在最上的那個(gè)就是第N個(gè))

hanoi(n-1,two,one,three);//把two柱子上的n-1個(gè)移動(dòng)到three柱子上。

}

}

解釋到這里,main函數(shù)里面的調(diào)用應(yīng)該也就很明白了吧?

a.hanoi(m,'A','B','C');

把'A'柱子上的m個(gè)盤(pán)子通過(guò)'B'柱子全部移動(dòng)到'C'上面的步驟。

解釋起來(lái)很容易,想得多了也就慢慢明白了,最難的是如何設(shè)計(jì)一個(gè)遞歸出來(lái)。這個(gè)和數(shù)學(xué)里面的遞推公式很相似(事實(shí)上其來(lái)源就是遞推公式),想必你肯定知道遞增函數(shù)把? An = An-1 + 5(A0 = 0 );這個(gè)條件能夠唯一確定一個(gè)數(shù)列。

那現(xiàn)在你把它寫(xiě)成函數(shù)呢?

int A(int n) {

if(n == 0) {

return 0;

} else {

return A(n -1) + 5;

}

}

調(diào)用A(n)就能返回An的值。明白?

多想想,多練練,大家都是這么過(guò)來(lái)的:)祝好運(yùn)

java漢諾塔(河內(nèi)塔)問(wèn)題。解釋一下漢諾塔為3時(shí)怎么想

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

然后把3盤(pán)移動(dòng)至C塔,即第4步。

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

等于4的時(shí)候

,其實(shí)就是把123盤(pán)看成特殊盤(pán)!同樣的道理,因?yàn)闈h諾塔是遞歸實(shí)現(xiàn)的,明白之后很簡(jiǎn)單。

求一個(gè)漢諾塔的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?+?"移動(dòng)盤(pán)子?"?+?level?+?"?號(hào)到"?+?to);

}?else?{

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

System.out.println("從"?+?from?+?"移動(dòng)盤(pán)子?"?+?level?+?"?號(hào)到"?+?to);

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

}

}

}

java中漢諾塔的算法問(wèn)題

class HanRuoTa {

static long s=0;

public static void main(String args[]) {

int n =3;

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

System.out.println("移動(dòng)方案為:" );

hanoi(n, 'a', 'b', 'c');

System.out.println("需要移動(dòng)次數(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

移動(dòng)方案為:

a-b

a-c

b-c

a-b

c-a

c-b

a-b

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

JAVA漢諾塔

import java.awt.*;

public class TowerPoint //公共類TowerPoint

{

int x,y; //定義2個(gè)int類型的變量

boolean 有盤(pán)子; //定義一個(gè)boolean類型的變量

Disk 盤(pán)子=null; //初始化一個(gè)對(duì)象"盤(pán)子"并賦值為空

HannoiTower con=null; //初始化一個(gè)HannoiTower類的對(duì)象"con"并賦值為空

public TowerPoint(int x,int y,boolean boo) //構(gòu)造函數(shù),有3個(gè)參數(shù),x,y,boo

{

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

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

有盤(pán)子=boo; //將boo賦給"有盤(pán)子"

}

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

{

return 有盤(pán)子; //返回boolean類型的"有盤(pán)子"

}

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

{

有盤(pán)子=boo; //將boo賦給有盤(pán)子

}

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

{

return x; //返回x

}

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

{

return y; //返回y

}

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

{

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

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

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

con.add(盤(pán)子); //con對(duì)象的add方法,加入"盤(pán)子"對(duì)象

int w=盤(pán)子.getBounds().width; //定義并給一個(gè)int類型的w變量一個(gè)值,值為"盤(pán)子.getBounds().width"

int h=盤(pán)子.getBounds().height; //定義并給一個(gè)int類型的h變量一個(gè)值,值為"盤(pán)子.getBounds().height"

盤(pán)子.setBounds(x-w/2,y-h/2,w,h);//調(diào)用"盤(pán)子"對(duì)象的setBounds方法,并把傳遞值

有盤(pán)子=true;//boolean類型的對(duì)象"有盤(pán)子"等于true

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

}

public Disk 獲取盤(pán)子() //定義"獲取盤(pán)子"方法,方法返回Disk對(duì)象

{

return 盤(pán)子; //返回盤(pán)子

}

}

-----------------------另外說(shuō)一下,樓主太摳門(mén)了!!!!!!!!只給5分-----------------------

文章標(biāo)題:java漢諾塔代碼解析,java編寫(xiě)漢諾塔代碼
本文地址:http://chinadenli.net/article41/dsecded.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)網(wǎng)站改版電子商務(wù)外貿(mào)網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)