博客已轉(zhuǎn)到HuJinPu 's blog

          http://blog.csdn.net/hujinpu

          首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            24 Posts :: 0 Stories :: 25 Comments :: 0 Trackbacks

          源程序HanoiTower.java

          public ? class ?HanoiTower? {
          ????
          // ?將n個(gè)盤(pán)從from柱移到to柱,以aux柱為輔助柱
          ???? public ? static ? void ?move( int ?n,? char ?from,? char ?to,? char ?aux)? {
          ????????
          if ?(n? == ? 1 )? {
          ????????????
          // ?僅有一個(gè)盤(pán)時(shí),直接從from柱移到to柱
          ????????????System.out.println( " 將#1盤(pán)從? " ? + ?from? + ? " ?移到? " ? + ?to);
          ????????}
          ? else ? {
          ????????????
          // ?將n?-?1個(gè)盤(pán)從from柱移到aux柱,以to柱為輔助柱
          ????????????move(n? - ? 1 ,?from,?aux,?to);
          ????????????
          // ?將最下的圓盤(pán)從from柱移到to柱
          ????????????System.out.println( " 將# " ? + ?n? + ? " 盤(pán)從? " ? + ?from? + ? " ?移到? " ? + ?to);
          ????????????
          // ?將n?-?1個(gè)盤(pán)從aux柱移到to柱,以from柱為輔助柱
          ????????????move(n? - ? 1 ,?aux,?to,?from);
          ????????}

          ????}

          ????
          ????
          public ? static ? void ?main(String[]?args)? {
          ????????
          // ?將4個(gè)圓盤(pán)從A柱移到C柱,移動(dòng)時(shí)利用B柱為輔助柱
          ????????move( 3 ,? ' A ' ,? ' C ' ,? ' B ' );
          ????}

          }

          原則就是要把from柱的所有盤(pán)子移到to柱上去
          為此將n維問(wèn)題轉(zhuǎn)化為n-1維問(wèn)題,利用遞歸,可以很好的解決此問(wèn)題

          運(yùn)行結(jié)果
          將#1盤(pán)從 A 移到 C
          將#2盤(pán)從 A 移到 B
          將#1盤(pán)從 C 移到 B
          將#3盤(pán)從 A 移到 C
          將#1盤(pán)從 B 移到 A
          將#2盤(pán)從 B 移到 C
          將#1盤(pán)從 A 移到 C

          這里是對(duì)以上源程序中move(3,?'A',?'C',?'B')的分析
          ??????????????????????????????????????????????????????
          ?????????????????????????????????????????????????????????????????????move(3,?'A',?'C',?'B')
          ?????????????????????????????????????????????????
          ???????????????????????????move(2,?'A',?'B',?'C')??????????????????????#3 A-->C????????????????????????move(2,?'B',?'C',?'A')

          move(1,?'A',?'C',?'B')?????#2?A-->B??????move(1,?'C',?'B',?'A')???????move(1?'B',?'A','C')?????#2 B-->C????move(1,'A',?'C',?'B')
          ?????

          ?????????????????????????????



          ???????????



          posted on 2006-10-12 07:35 livahu 閱讀(405) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java
          主站蜘蛛池模板: 平舆县| 南宫市| 茌平县| 朝阳区| 开江县| 滦南县| 敦煌市| 新乡市| 新乐市| 紫金县| 施甸县| 利辛县| 宁乡县| 茂名市| 施秉县| 龙陵县| 广汉市| 中方县| 青州市| 盐城市| 长治市| 藁城市| 佛冈县| 张家港市| 平度市| 永靖县| 九龙坡区| 淮北市| 平昌县| 南涧| 平度市| 当雄县| 内丘县| 黄山市| 通江县| 贵阳市| 银川市| 阿克陶县| 肥城市| 富平县| 荔波县|