欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:漢諾塔問(wèn)題 Hanoi

 更新時(shí)間:2015年06月20日 11:17:32   投稿:junjie  
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:漢諾塔問(wèn)題 Hanoi,本文直接給出實(shí)現(xiàn)代碼,代碼中包含大量注釋,需要的朋友可以參考下
/** 
 * 漢諾塔大學(xué)的時(shí)候就學(xué)過(guò),但是根本沒(méi)搞明白,唯一知道的就是要用遞歸的方法來(lái)求解。 
 * 問(wèn)題描述: 
 * 有三根桿子A,B,C。A桿上有N個(gè)(N>1)穿孔圓盤(pán),盤(pán)的尺寸由下到上依次變小。 
 * 要求按下列規(guī)則將所有圓盤(pán)移至C桿: 
 * 1.每次只能移動(dòng)一個(gè)圓盤(pán); 
 * 2.大盤(pán)不能疊在小盤(pán)上面。 
 * 提示:可將圓盤(pán)臨時(shí)置于B桿,也可將從A桿移出的圓盤(pán)重新移回A桿, 
 * 但都必須尊循上述兩條規(guī)則。 
 * 問(wèn):如何移?最少要移動(dòng)多少次? 
 * 解決方法: 
 * 假設(shè)只有2個(gè)盤(pán)子,柱子分別是A, B, C柱。那么只需要三步就可以把他們從A柱移到C柱, 
 * 這三步是A->B, A->C, B->C。 
 * 如果盤(pán)子數(shù)n超過(guò)2呢,我們就可以把這些盤(pán)子看成由最下面的那個(gè)盤(pán)子和 上面n-1個(gè)盤(pán)子 兩部分, 
 * 這兩部分同樣可以用上面的三步實(shí)現(xiàn)移動(dòng)。 
 * 也就是說(shuō)我們可以通過(guò)遞歸地調(diào)用上面的步驟實(shí)現(xiàn)將所有n個(gè)盤(pán)子從A柱移動(dòng)到C柱。 
 */ 
package al; 
public class Hanoi { 
   
  public static void main(String[] args) { 
     
    Hanoi hanoi = new Hanoi(); 
    hanoi.move(3, 'A', 'B', 'C'); 
  } 
   
  /** 
   * @author 
   * @param n 盤(pán)子數(shù)目 
   * @param from 起始柱子 
   * @param temp 中間柱子 
   * @param to 目標(biāo)柱子 
   */ 
  public void move(int n, char from, char temp, char to) { 
    if(n == 1) { 
      System.out.println("Move 1 plate from " + from + " to " + to); 
    } else { 
      move(n-1, from, to, temp); 
      move(1, from, temp, to); 
      move(n-1, temp, from, to); 
    } 
  } 
} 

相關(guān)文章

  • SpringBoot?使用log4j2的配置過(guò)程

    SpringBoot?使用log4j2的配置過(guò)程

    這篇文章主要介紹了SpringBoot?使用log4j2的配置,springboot默認(rèn)是用logback的日志框架的,所以要在pom中配置排除logback。這里需要注意的是,其實(shí)不止一處使用了logback,所以要在starter中統(tǒng)一排除,然后引入log4j2,需要的朋友可以參考下
    2022-09-09
  • Java函數(shù)式編程(三):列表的轉(zhuǎn)化

    Java函數(shù)式編程(三):列表的轉(zhuǎn)化

    這篇文章主要介紹了Java函數(shù)式編程(二):列表的轉(zhuǎn)化,lambda表達(dá)式不僅能幫助我們遍歷集合,并且可以進(jìn)行集合的轉(zhuǎn)化,需要的朋友可以參考下
    2014-09-09
  • java常見(jiàn)的序列化方式

    java常見(jiàn)的序列化方式

    這篇文章主要為大家詳細(xì)介紹了java中兩種常見(jiàn)的序列化方式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Java 生成任意長(zhǎng)度的驗(yàn)證碼過(guò)程解析

    Java 生成任意長(zhǎng)度的驗(yàn)證碼過(guò)程解析

    這篇文章主要介紹了Java 生成任意長(zhǎng)度的驗(yàn)證碼過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list'的問(wèn)題解決

    Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?c

    這篇文章主要介紹了Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list',需要的朋友可以參考下
    2023-04-04
  • maven配置阿里倉(cāng)庫(kù)的方法步驟

    maven配置阿里倉(cāng)庫(kù)的方法步驟

    這篇文章主要介紹了maven配置阿里倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 深度解析Java中ArrayList的使用

    深度解析Java中ArrayList的使用

    ArrayList?類是一個(gè)可以動(dòng)態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒(méi)有固定大小的限制,我們可以添加或刪除元素。本文將通過(guò)示例帶你深度解析Java中ArrayList的使用,需要的可以參考一下
    2022-09-09
  • Java SSM框架如何配置靜態(tài)資源加載

    Java SSM框架如何配置靜態(tài)資源加載

    這篇文章主要介紹了Java SSM框架如何配置靜態(tài)資源加載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • java:java.lang.ExceptionInInitializerError報(bào)錯(cuò)解決過(guò)程

    java:java.lang.ExceptionInInitializerError報(bào)錯(cuò)解決過(guò)程

    這篇文章主要給大家介紹了關(guān)于java:java.lang.ExceptionInInitializerError報(bào)錯(cuò)的解決過(guò)程,java.lang.ExceptionInInitializerError 是一個(gè)異常,表示在初始化一個(gè)類的靜態(tài)變量或靜態(tài)塊時(shí)發(fā)生了錯(cuò)誤,需要的朋友可以參考下
    2023-10-10
  • 詳解如何將springboot項(xiàng)目導(dǎo)出成war包

    詳解如何將springboot項(xiàng)目導(dǎo)出成war包

    這篇文章主要介紹了詳解如何將springboot項(xiàng)目導(dǎo)出成war包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論