笨笨熊搬家交通篇

2021-06-21 23:09:44 字數 1837 閱讀 3173

笨笨熊搬家交通篇

描述:森林裡的苯苯熊要喬遷新喜,上次他已經將物品打包完成,並約了朋友來幫忙。接下來他要選定乙個搬家的時間,想了很久,就決定在國慶節進行,因為國慶放假朋友們都有時間啦。但是在森林裡,從他現在房子到新豪宅,所經之地有山有水,路途曲折,甚至有些道路是不通的。

請你和他一起檢視指定的地圖,看看從笨笨熊現在的房子到新宅之間,道路是否是暢通的呢?

地圖是r行、c列的矩陣,矩陣的每乙個格仔剛好是一天的行程。

矩陣由「b」、「-」、「#」、「h」四種字元成員組成,其中:

b: 代表苯苯熊現在的房子;

h: 代表笨笨熊新的豪宅;

-: 代表可以通行的道路;

#: 代表無法通過的障礙(高山、大河等);

此外,森林裡也有交通規則地:在任務位置,只能向「上、下、左、右」四個方向中的其中乙個方向行走。

執行時間限制:

無限制記憶體限制:

無限制輸入:

4  // r的數值

4  // c的數值,下面是地圖。

--##---

b-----h

#---#--

-------

輸出:y //代表道路可達

或 n //代表道路不通

樣例輸入:

-b-h#

樣例輸出:

y思路:遞迴。從笨笨熊現在的房子處開始,分別從上下左右四個方向進行遞迴搜尋。在遞迴的時候,要注意不要像來的方向返回去找。如當前位置為(1,2),向上查詢時,到(0,2)位置處,在對(0,2)進行查詢時,就不要向下再次查詢(1,2)位置,不然會形成死迴圈。這個問題在**中由如**現:

1 != idir + i && 5 != idir + i

這裡特別說明下:

根據定義的方向陣列,int idirection[4][2] = , , , };//方向, 左右上下

idir是取二維陣列中行的下標,所以,idir= 0,表示向左;idir=1,向右;idir=2,向上;idir=3,向下

idir表示上乙個搜尋位置到當前搜尋位置的方向,如當前為(1,2),如果上乙個為(1,1),此時idir=2,表示從(1,1)到(1,2)是向右搜尋的。

i是對當前位置進行搜尋的四個方向,也是idirection[4][2]中一維的下標。接著剛才的例子,在對(1,2)進行搜尋時,就不能回到(1,1),即 i 在遍歷四個方向時,不能向左搜尋,即不能等於 0, 所以 i+idir != 1;

上下不能返回查詢, 即i+ idir != 5;(讀者可自行分析)

ps:如果陣列idirection[4][2]中定義的方向順序不一樣,這裡

#include #include #include //查詢路徑

//irow:地圖的總行數

//icol:地圖的總列數

// chinmap: 地圖,以為陣列形式輸入

//icur: 當前所在行

//icurcol: 當前所在列

//idir: 上個位置到當前位置的方向

//iisfirst: 是否是第一次呼叫,如果是第一次呼叫,需要找到起點(即老房子所在行列)

int findpath(int irow, int icol, char *chinmap, int icurrow, int icurcol, int iisfirst, int idir)

int idirection[4][2] = , , , };//方向, 左右上下

int iisbeak = 0;

if(iisfirst == 1)

{ int irow_i, icol_i;

//找到老房子

for (irow_i = 0; irow_i

笨笨熊搬家之交通篇

據說是華為的上機題,覺得挺有意思,拿來做做 森林裡的苯苯熊要喬遷新喜,上次他已經將物品打包完成,並約了朋友來幫忙。接下來他要選定乙個搬家的時間,想了很久,就決定在國慶節進行,因為國慶放假朋友們都有時間啦。但是在森林裡,從他現在房子到新豪宅,所經之地有山有水,路途曲折,甚至有些道路是不通的。請你和他一...

2014華為程式設計大賽題目 笨笨熊搬家打包篇

題目 笨笨熊搬家打包篇 森林裡的笨笨熊今天可開心啦 他買了新房子,喬遷新喜要搬家了。因此,笨笨熊請了許多好朋友來幫忙搬家,並準備了很多小紙盒用來裝需要搬的物品,不過,這些紙盒的容積都是相同的,並且最多只能裝兩個物品。但是,為了不打擾太多的朋友,笨笨熊想了個 聰明 辦法 讓每個紙盒使用效率最高 注 只...