HNCU1742 演算法3 3 迷宮

2021-06-16 16:35:01 字數 2319 閱讀 9613

有乙個 10 x 10 的迷宮,起點是『s』,終點是『e』,牆是『#』,道路是空格。乙個機械人從起點走到終點。當機械人走到乙個通道塊,前面已經沒有路可走時,它會轉向到當前面向的右手方向繼續走。如果機械人能夠過,則留下足跡『*』,如果走不通,則留下標記『!』。

下面給出書中的演算法,請你模擬機械人的走法輸出最終的狀態。

圖:迷宮演算法

乙個 10 x 10 的二維字元陣列。

機械人走過的路徑狀態。

##########

#s #   # #

#  #   # #

#    ##  #

# ###    #

#   #    #

# #   #  #

# ### ## #

##      e#

##########

##########

#**#!!!# #

# *#!!!# #

#**!!##  #

#*###    #

#***#    #

# #***#  #

# ###*## #

##   ****#

##########

#include#include#include/* malloc()等 */

#include/* int_max等 */

#include/* eof(=^z或f6),null */

#include/* atoi() */

/* 函式結果狀態** */

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow 0

typedef int status; /* status是函式的型別,其值是函式結果狀態**,如ok等 */

typedef int boolean; /* boolean是布林型別,其值是true或false */

#define maxlength 25 /* 設迷宮的最大行列為25 */

#define stack_init_size 10 /* 儲存空間初始分配量 */

#define stackincrement 2 /* 儲存空間分配增量 */

typedef struct

postype;

typedef struct

selemtype; // 定義堆疊元素的型別

typedef struct

sqstack;

typedef struct

mazetype; // 定義迷宮型別(二維字元陣列)

/* 定義牆元素值為0,可通過路徑為1,不能通過路徑為-1,通過路徑為足跡 */

status pass(mazetype mymaze, postype curpos)

void footprint(mazetype &mymaze, postype curpos)

postype nextpos(postype curpos, int dir)

return returnpos;

}void markprint(mazetype &mymaze, postype curpos)

status initstack(sqstack *s)

status push(sqstack *s,selemtype e)

*((*s).top)++=e;

return ok;

}status stackempty(sqstack s)

status pop(sqstack *s,selemtype *e)

status mazepath(mazetype &maze, postype start, postype end)

else // 當前位置不能通過

// while

if (e.di < 4)

// if

} // if

} // else

}while (!stackempty(s));

return false;

} // mazepath

int main()

else if(maze.arr[i][j] == 'e') // 獲得終點座標}}

mazepath(maze, start, end); // 移動

for(i=0; i<10; i++) // 輸出狀態

return 0;

}

HNCU1327 演算法2 13 2 16 靜態鍊錶

靜態鍊錶是使用順序儲存結構來實現的鍊錶。嚴蔚敏 資料結構 c語言版 在介紹靜態鍊錶時使用的是乙個姓氏列表。圖1是書本上的靜態鏈表示例,圖 a 是初始化後插入了8個姓氏的鍊錶,圖 b 是在第5個元素前插入了 shi 而刪除了 wang 的結果。圖1 靜態鏈表示例 a 修改前的狀態 b 修改後的狀態 現...

HNCU 1746 演算法4 1,4 3 定位子串

題目描述 將子串在母串中第一次出現的位置找出來。圖1 在母串中第pos個位置定位子串的演算法 圖2 從母串中第pos個位置獲得長度為len的子串 輸入 若干對字串,每對字串佔一行並用乙個空格分開。前乙個字串為母串,後者為子串。字串只包含英文本母的大小寫。每個字串不超過98個字元。輸出 輸出子串在母串...

HNCU1330 演算法3 1 八進位制數

將十進位制數轉換為八進位制,並輸出。圖 將十進位制數轉換為八進位制並輸出 輸入包含若干十進位制正整數。輸出相應的八進位制數,每個佔一行。12 3789 191002034512 371011 2346162771 include include include malloc 等 include in...