【20180807模擬測試】T2 box

【問題描述】

有個桌子長 R 寬 C,被分爲 R*C 個小方格。其中,一些方格上有箱子,一些方格上有按 鈕,一些方格上有障礙物,一些方格上是空地。現在有個任務,需要把所有箱子推到這些按 鈕上面。箱子有個特徵,只能推不能搬不能拉。現在需要用最少的步數把所有箱子推到按鈕 上。 當然,箱子和人都只能以格子爲單位移動,不存在一部分在格內一部分在格外的情況; 只能向四個方向推,箱子和推箱子的隊員都不能穿越障礙物。推動的定義是,人的前進方向 被箱子擋住,且箱子在順着前進方向的下一格不是箱子或者障礙物,那麼就可以推着箱子和 箱子一起前進一步。

【輸入文件】

輸入第一行有兩個整數 R,C(4<=R,C<=7),代表桌子的長和寬,接下來一共有 R 行,
每行有 C 個字符。
字符的含義:
0:代表空地
1:代表障礙物
2:代表箱子
3:代表按鈕
4:人所在的初始地方
輸入數據保證障礙物環繞整個地圖,箱子數目跟按鈕數目相同,箱子最少有一個,不 會超過 3 個,隊員肯定只有一個。不用考慮箱子初始就按着按鈕的情況。保證有解

【輸出文件】

輸出只有一行,爲解決機關的最小步數。

【輸入樣例】

4 5
11111
14231
10231
11111

【輸出樣例】

4

【樣例說明】 在樣例中,最快的方法之一是先向東把第一個箱子推到按鈕上,然後向西走
回原處,之 後向南一步,再向東推第二個箱子到按鈕上。至此任務完成,共使用了 4 步。
【數據範圍】
對 30%的輸入數據 :箱子只有一個。
對 100%的輸入數據 :4<=R,C<=7

題解

用 dist[position][box1][box2][box3]記錄人在 position,箱子 1 在 box1,箱子 2 在box2,箱子 3 在 box3 位置時最少需要花費的步數。Bfs 一遍即可。

首先的問題是box1怎麼記錄兩個值(座標嘛)so我們就記錄一個值,行號脫離出去(未完待續,太困了)

那麼上代碼

誒?代碼呢?
作者已經困死在了調試板前
so等作者什麼時候醒了再說吧

那麼考試時發生了什麼?

也行low逼作者考試前聽了梁靜茹的勇氣,於是有了勇氣寫30分大bfs
結果還是搜爆了(全是錯的,什麼樣例也過不了)
然而作者仍不死心,覺得可以把搜索分成兩大部分
就先dfs出了人到箱子的上下左右方向不同的路程,(這部分就是個走迷宮的板嘛)再開始玄學搞事
搞着搞着搞了10分
聊勝於無了
ps(這道題應該妥妥第三題的)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章