有乙個 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...