下圖給出了乙個迷宮的平面圖,其中標記為1的為障礙,標記為0的為可以通行的地方。
010000
000100
001001
110000
迷宮的入口為左上角,出口為右下角,在迷宮中,只能從乙個位置走到這個它的上、下、左、右四個方向之一。
對於上面的迷宮,從入口開始,可以按drrurrdddr的順序通過迷宮,一共 10 步。
其中 d、 u、 l、 r 分別表示向下、向上、向左、向右走。
對於乙個n行m列的迷宮(n≤30,m≤50),請找出一種通過迷宮的方式,其使用的步數最少,在步數最少的前提下,請找出字典序最小的乙個作為答案。
請注意在字典序中d第一行兩個整數n和m,分別表示迷宮的行數和列數。
接下來n行,每行由長度為m的01串組成。
乙個字串。
4
6010000
000100
001001
110000
drrurrdddr
非常簡單的一道廣搜題,只需要把四方向的順序按照字典序排一下,每次走動記錄方向就可以了,直接貼**吧
#include
using
namespace std;
intmain()
; string d =
"dlru"
;int vis[55]
[55];
memset
(vis,0,
sizeof
(vis));
for(
int i =
0; i < n; i++)}
typedef pairint,
int>
, string> p;
queuep; p.
push(,
""});
vis[0]
[0]=
1;while
(!p.
empty()
)for
(int i =
0; i <
4; i++
), q.second + d[i]})
;}}}
return0;
}
藍橋杯填空題(一)
以下 可以從陣列a中找出第k小的元素。它使用了類似快速排序中的分治演算法,期望時間複雜度是o n 的。請仔細閱讀分析原始碼,填寫劃線部分缺失的內容。include int quick select int a,int l,int r,int k int i l,j r while i j while...
藍橋杯填空題 剪郵票
如下面第一張圖,有12張連在一起的12生肖的郵票。現在你要從中剪下5張來,要求必須是連著的。僅僅連線乙個角不算相連 具體例子比如第二張,第三張圖中,粉紅色所示部分就是合格的剪取。請你計算,一共有多少種不同的剪取方法。思路 先找到5個數的組合,然後從第乙個數字開始遍歷,經過上下左右操作檢測5個數是否都...
藍橋杯填空題 獎券數目
有些人很迷信數字,比如帶 4 的數字,認為和 死 諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某 活動的獎券號碼是5位數 10000 99999 要求其中不要出現帶 4 的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。思路 迴圈遍歷每一位數字的...