国产色在线视频-国产色综合一区二区三区-国产身材极品喷水 在线播放-国产深夜福利视频观看-国产深夜福利视频在线-国产深夜福利视频在线播放

解題思路ASP技巧IQCar的實(shí)現(xiàn)II,用計(jì)算機(jī)如何求出IQCar游戲的解法呢

2012/3/9 14:53:16   閱讀:2174    發(fā)布者:2174

  學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)的,第一感覺(jué)就是用“深度優(yōu)先搜索”或者是“廣度優(yōu)先算法”。就是不停的嘗試每一種可能,直到到達(dá)解。然后將嘗試的過(guò)程輸出即可。

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

  那么本問(wèn)題就轉(zhuǎn)化為兩個(gè)步驟
    1、用Dijkstra算法求出一條通路,這條通路也是最短通路,也就是最優(yōu)解

  2、根據(jù)輸入的初始狀態(tài),生成一個(gè)集合,所有車子的一個(gè)位置排列為集合中的一個(gè)元素。并且為每一個(gè)元素建立他們之間的關(guān)系(有連線則表示能從一個(gè)排列移動(dòng)一個(gè)位置到另一個(gè)排列,反之則無(wú)連線)。

  注:寫完程序后,仔細(xì)想來(lái),在本題中,由于各連線的長(zhǎng)默認(rèn)都是1,Dijkstra算法其實(shí)就是廣度優(yōu)先算法。

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

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

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