亚洲一区在线播放-欧美另类极品videosbest使用方法-亚洲成人av在线播放-黄色录像大片-色悠悠av-91欧美日韩-中文字幕偷拍-综合色婷婷一区二区亚洲欧美国产-一级爱爱片-黑人添美女bbb添高潮了-久久青娱乐-黄色一级视屏-美女国产在线-亚洲九九九九-欧美 日韩 国产 成人 在线观看-星空大象mv高清在线观看免费-国产福利合集-好吊色视频在线观看-尤物综合网-18岁成年人网站

解題思路ASP技巧IQCar的實現II,用計算機如何求出IQCar游戲的解法呢

2012/3/9 14:53:16   閱讀:2490    發布者:2490

  學過數據結構的,第一感覺就是用“深度優先搜索”或者是“廣度優先算法”。就是不停的嘗試每一種可能,直到到達解。然后將嘗試的過程輸出即可。

  這個求通路的有一個很有名的算法,Dijkstra算法(最短路徑算法)。

  那么本問題就轉化為兩個步驟
    1、用Dijkstra算法求出一條通路,這條通路也是最短通路,也就是最優解

  2、根據輸入的初始狀態,生成一個集合,所有車子的一個位置排列為集合中的一個元素。并且為每一個元素建立他們之間的關系(有連線則表示能從一個排列移動一個位置到另一個排列,反之則無連線)。

  注:寫完程序后,仔細想來,在本題中,由于各連線的長默認都是1,Dijkstra算法其實就是廣度優先算法。

  例如:仔細觀察,我們可以發現每輛車的可能性位置可能性非常少(由于車子只能前后移動,故長度為3的車子只有4種可能,長度為2的車子有五種可能)。那么,則這些車子排列的可能性就不會多(原因是,如果車子多,則彼此之間的限制會很多,因為兩輛車不能擠在一個格子里,如果車子少,雖然限制少但是車子少,必然總數少)。這樣,一般的題目,把所有的車子排列構成一個集合的話,這個集合中的元素不會很多(實際情況是,一般的題目,這個集合的元素在1200左右)。

  想到這里我想到用圖論的方法求解。

  所有的車子的一個位置排列,成為圖中的一個點,兩點之間的連線表示能從一個排列移動一個位置到另一個排列。題目中的初始狀態為圖中的一個點,達到解題條件的為另一個點(這樣的點可能不止一個),問題就轉化為在圖中從一個點找到到另一個點的通路。