亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#解決漢諾塔問題DEMO

2020-01-24 01:49:24
字體:
來源:轉載
供稿:網友

漢諾塔問題是學習遞歸的入門問題,這里用C#簡單實現了一個漢諾塔之間傳遞盤子的小程序

通過簡單繪圖實現盤子在幾個塔之間的轉換:

namespace 漢諾塔{  //盤子類  class HanioItem  {    public int HanoiItemHeight { get; set; }//盤子的高度    public int HanoiItemWidth { get; set; }//盤子的寬度    public Point HanoiItemPoint { get; set; }//畫盤子的起始點  }}

namespace 漢諾塔{     public partial class FrmShow : Form  {    List<HanioItem> HanioItemsA = new List<HanioItem>();//塔A中的盤子集合    List<HanioItem> HanioItemsB = new List<HanioItem>();//塔B中的盤子集合    List<HanioItem> HanioItemsC = new List<HanioItem>();//塔C中的盤子集合    Pen p;//畫筆    Graphics hanioPicA;//塔A的畫布    Graphics hanioPicB;//塔B的畫布    Graphics hanioPicC;//塔C的畫布        int tag;//盤子個數          public FrmShow()    {            InitializeComponent();         }    /// <summary>    /// 初始化3個PictureBox畫布    /// </summary>    public void InitialTools()    {            p = new Pen(Color.Black);       hanioPicA = HanoiPicA.CreateGraphics();       hanioPicB = HanoiPicB.CreateGraphics();       hanioPicC = HanoiPicC.CreateGraphics();    }          public void InitialGraphics()    {      int HanioItemHeight = 15;//塔中盤子的高度      int HanioStartItemWidth = 90;//第一個盤子的寬      Point HanioStartItemP = new Point(15, 135);//第一個盤子起始點      InitialTools();                tag = Convert.ToInt16(this.Tag.ToString());      HanioItemsA.Clear();      HanioItemsB.Clear();      HanioItemsC.Clear();                 //初始化塔A上的盤子           int diffrence = (90 - 30) / tag;//兩個盤子之間寬度之差      for (int i = 1; i <= tag; i++)      {        HanioItem item = new HanioItem();        item.HanoiItemWidth = HanioStartItemWidth;        item.HanoiItemHeight = HanioItemHeight;        item.HanoiItemPoint = HanioStartItemP;        HanioItemsA.Add(item);        HanioStartItemWidth -= diffrence;        HanioStartItemP.X += diffrence / 2;             }      //為漢諾塔畫盤子      ShowHanoiGraphics();    }    /// <summary>    /// 畫3個塔中的盤子    /// </summary>    private void ShowHanoiGraphics()    {            hanioPicA.Clear(this.BackColor);      hanioPicB.Clear(this.BackColor);      hanioPicC.Clear(this.BackColor);      //為漢諾塔A畫初始線條            hanioPicA.DrawLine(p, 0, 150, 120, 150);      hanioPicA.DrawLine(p, 60, 0, 60, 150);      //為漢諾塔B畫初始線條           hanioPicB.DrawLine(p, 0, 150, 120, 150);      hanioPicB.DrawLine(p, 60, 0, 60, 150);      //為漢諾塔C畫初始線條            hanioPicC.DrawLine(p, 0, 150, 120, 150);      hanioPicC.DrawLine(p, 60, 0, 60, 150);      //畫A塔的盤子      for (int i = 0; i < HanioItemsA.Count; i++)       {        hanioPicA.DrawRectangle(p, HanioItemsA[i].HanoiItemPoint.X, HanioItemsA[i].HanoiItemPoint.Y - i * 15, HanioItemsA[i].HanoiItemWidth, HanioItemsA[i].HanoiItemHeight);      }           //畫B塔的盤子      for (int i = 0; i < HanioItemsB.Count; i++)      {        hanioPicB.DrawRectangle(p, HanioItemsB[i].HanoiItemPoint.X, HanioItemsB[i].HanoiItemPoint.Y - i * 15, HanioItemsB[i].HanoiItemWidth, HanioItemsB[i].HanoiItemHeight);      }           //畫C塔的盤子      for (int i = 0; i < HanioItemsC.Count; i++)      {        hanioPicC.DrawRectangle(p, HanioItemsC[i].HanoiItemPoint.X, HanioItemsC[i].HanoiItemPoint.Y - i * 15, HanioItemsC[i].HanoiItemWidth, HanioItemsC[i].HanoiItemHeight);      }         }    /// <summary>    /// 漢諾塔核心遞歸函數    /// </summary>    /// <param name="n">盤子個數</param>    /// <param name="A">塔A</param>    /// <param name="B">塔B</param>    /// <param name="C">塔C</param>    private void Hanio(int n, List<HanioItem> A, List<HanioItem> B, List<HanioItem> C)    {      if (n == 1)      {        HanioMove(A, C);      }      else      {        Hanio(n - 1, A, C, B);        HanioMove(A, C);        Hanio(n-1,B,A,C);      }    }        /// <summary>    /// 盤子移動畫圖實現    /// </summary>       private void HanioMove(List<HanioItem> X, List<HanioItem> Y)    {              HanioItem item = new HanioItem();      item = X[X.Count-1];      X.Remove(item);//塔X移除一個盤子      Y.Add(item); //塔Y添加一個盤子            ShowHanoiGraphics();      System.Threading.Thread.Sleep(1000);      }    private void btnOK_Click(object sender, EventArgs e)    {           Hanio(tag, HanioItemsA, HanioItemsB, HanioItemsC);    }    private void FrmShow_Paint(object sender, PaintEventArgs e)    {               InitialGraphics();    }        }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩精品在线视频| 91精品国产色综合久久不卡98| 精品国产精品自拍| 国产精品久久久久aaaa九色| 欧美电影免费在线观看| 亚洲va欧美va国产综合剧情| 欧美老少配视频| 欧美在线影院在线视频| 91精品免费看| 日韩视频免费中文字幕| 国产精自产拍久久久久久蜜| 97在线观看视频| 国产精品激情av在线播放| 欧美大片免费观看在线观看网站推荐| 成人中文字幕+乱码+中文字幕| 欧美激情女人20p| 最新69国产成人精品视频免费| 国产精品视频白浆免费视频| 最近中文字幕2019免费| 亚洲美女动态图120秒| 日韩亚洲国产中文字幕| 亚洲欧美日韩视频一区| 国产噜噜噜噜噜久久久久久久久| 久久av在线播放| 97热在线精品视频在线观看| 国产成人精品一区二区三区| 午夜精品久久久久久久久久久久久| 日韩欧美精品网站| 亚洲香蕉在线观看| 色悠悠久久88| 欧美情侣性视频| 国产一区二区三区在线观看网站| 国产脚交av在线一区二区| 亚洲男人天天操| 成人中文字幕+乱码+中文字幕| 色婷婷综合久久久久| 日本午夜在线亚洲.国产| 91人人爽人人爽人人精88v| 国产精品久久久久91| 日韩在线免费视频观看| 欧美日韩精品在线视频| 成人有码在线播放| 国产女人18毛片水18精品| 精品亚洲永久免费精品| 一区二区三区回区在观看免费视频| 日韩视频第一页| 成人乱人伦精品视频在线观看| 欧美日韩精品在线视频| 一级做a爰片久久毛片美女图片| 青青草原一区二区| 美女黄色丝袜一区| 色悠悠久久久久| 欧美最猛性xxxxx(亚洲精品)| 国产在线播放91| 亚洲大尺度美女在线| 精品久久久久久中文字幕大豆网| 日本老师69xxx| 日韩av片电影专区| 91亚洲精品在线观看| 亚洲国产婷婷香蕉久久久久久| 欧美香蕉大胸在线视频观看| 午夜精品一区二区三区av| 欧美日韩亚洲一区二区三区| 欧美色另类天堂2015| 久久精品欧美视频| 日韩欧美亚洲一二三区| 亚洲丁香婷深爱综合| 性欧美亚洲xxxx乳在线观看| 九九九热精品免费视频观看网站| 55夜色66夜色国产精品视频| 成人免费在线视频网址| 欧美性色视频在线| 91精品美女在线| 久久成人精品电影| 免费成人高清视频| 久久97久久97精品免视看| 亚洲国产精品嫩草影院久久| 亚洲最大福利视频网| 国产成人在线视频| 国产精品视频内| 亚洲在线视频福利| 成人激情视频在线观看| 亚洲欧美激情四射在线日| 日韩国产中文字幕| 久久夜色精品亚洲噜噜国产mv| 欧美在线视频网站| 日韩激情视频在线播放| 亚洲欧洲中文天堂| 日韩免费在线播放| 欧美精品日韩www.p站| 久久精品99久久香蕉国产色戒| 日本中文字幕不卡免费| 成人精品视频在线| 亚洲国产欧美一区| 一区二区三区美女xx视频| 日韩中文字幕免费视频| 欧美日韩国产在线看| 欧美国产中文字幕| 国产激情综合五月久久| 久久精品99久久香蕉国产色戒| 久久99精品国产99久久6尤物| 欧美亚洲视频一区二区| 亚洲第一男人天堂| 欧美日韩中文字幕在线视频| 欧美日韩国产一中文字不卡| 欧美极品在线视频| 亚洲第一av在线| 中文字幕av一区中文字幕天堂| 日韩高清av一区二区三区| 欧美精品在线免费播放| 日产精品久久久一区二区福利| 亚洲人成电影在线| 97免费视频在线播放| 69视频在线播放| 亚洲成人av在线播放| 欧美精品久久久久| 精品久久久久久中文字幕大豆网| 久久久亚洲影院你懂的| 亚洲精品久久久久国产| 亚州av一区二区| 国产日韩欧美电影在线观看| 日韩电影中文字幕在线观看| 国产婷婷97碰碰久久人人蜜臀| 91久久在线观看| 久久精品美女视频网站| 亚洲国产高潮在线观看| 欧美丝袜一区二区| 国产精品永久免费观看| 国产精品午夜视频| 91免费综合在线| 久久国产精品久久国产精品| 欧美日韩免费区域视频在线观看| 欧美日韩国产中文精品字幕自在自线| 欧美国产乱视频| 欧美理论在线观看| 日韩国产高清污视频在线观看| 久久伊人精品一区二区三区| 91亚洲精品一区| 亚洲色图18p| 久久九九国产精品怡红院| 日韩视频欧美视频| 日韩精品在线观看网站| 中文字幕亚洲综合久久筱田步美| 亚洲国产97在线精品一区| 亚洲欧美福利视频| 日韩欧美999| 在线观看欧美成人| 国产在线播放不卡| 在线观看精品自拍私拍| 欧美性一区二区三区| 国产一区二区av| 2019中文字幕全在线观看| 成人在线国产精品| 欧美激情奇米色| 午夜精品一区二区三区在线播放| 国产精品久久久久久超碰| 国产精品久久久久av免费| 日韩电影视频免费| 亚洲国产精品国自产拍av秋霞| 久久久久久亚洲精品| 中文字幕亚洲无线码a| 91成人福利在线| 欧美影院成年免费版| 国产精品国产亚洲伊人久久|