資料結構課程設計
上學時沒學過資料結構和演算法,於是現在有機會就自學。下面是我最近在等待進入專案組期間,花了1小時學習了一下迷宮問題。
一.需求設計:以一個m*m 的方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個程式,對任意設定的迷宮,求出一條從入口的通道,或得出沒有通路的結論。
二.概要設計:
儲存結構:
採用了陣列以及結構體來儲存資料,在探索迷宮的過程中用到的棧,屬於順序儲存結構。
/*八個方向的陣列表示形式*/
int move[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1, 0},{-1, 1}};
/*用結構體表示位置*/
struct position
{int x,y;};
position stack[m*m+1];
基本演算法:
走迷宮的過程可以模擬為一個搜尋的過程:每到一處,總讓它按東、東南、南、西南、西、西北、北、東北8個方向順序試探下一個位置;如果某方向可以通過,並且不曾到達,則前進一步,在新位置上繼續進行搜尋;如果8個方向都走不通或曾經到達過,則退回一步,在原來的位置上繼續試探下一位置。
每前進或後退一步,都要進行判斷:若前進到了出口處,則說明找到了一條通路;若退回到了入口處,則說明不存在通路。
用一個字元型別的二維陣列表示迷宮,陣列中每個元素取值“0”(表示通路)或“1”(表示牆壁)。迷宮的入口點在位置(1,1)處,出口點在位置(m,m)處。設計一個模擬走迷宮的演算法,為其尋找一條從入口點到出口點的通路。
二維陣列的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宮的邊界;第1行第1列元素和第m行第m列元素置成“0”,表示迷宮的`入口和出口;其餘元素值用隨機函式產生。
假設當前所在位置是(x,y)。沿某個方向前進一步,它可能到達的位置最多有8個。
如果用二維陣列move記錄8個方向上行下標增量和列下標增量,則沿第i個方向前進一步,可能到達的新位置座標可利用move陣列確定:
x=x+move[i][0]
y=y+move[i][1]
從迷宮的入口位置開始,沿圖示方向順序依次進行搜尋。在搜尋過程中,每前進一步,在所到位置處做標記“”(表示這個位置在通路上),並將該位置的座標壓入棧中。每次後退的時候,先將當前所在位置處的通路標記“”改成死路標記“×”(表示這個位置曾到達過但走不通,以後不要重複進入),然後將該位置的座標從棧頂彈出。搜尋到出口位置時,陣列中那些值為“”的元素形成一條通路。
-
幼兒園科學小實驗的教案設計
篇一:幼兒園科學小實驗一、萊博瑞幼兒園科學小實驗:水寶寶粘合劑二、活動目標:(一)認知目標:瞭解水的附著力。(二)技能目標:1、通過幼兒對物品的觸控,鍛鍊幼兒的感知能力。2、通過幼兒對圖形的拼擺,激發幼兒的創造力。三、探索要點:為什麼水可以把兩個物體黏在一起;探索路徑...
-
計算機電子工程技術發展趨勢分析論文
摘要:隨著網際網路技術的不斷進步與發展,資訊時代已全面來臨。計算機電子工程技術已成為經濟增長的推動力,有效促進我國各行各業的發展,帶動經濟不斷向上攀升,併為現代化事業發展提供有力的支撐。筆者論述瞭如何能保障計算機電子工程技術的有效運用,針對當前發展計算機...
-
安卓應用程式設計大賽策劃書
一、組織機構主辦單位:教務處、校團委、校學生會承辦單位:電腦科學學院協辦單位:電腦科學學院團委、電腦科學學院社團聯合會、電腦科學學院學生會二、比賽宗旨挑戰極限·勇於創新三、活動時間10至12月四、參賽物件韶關學院全體學生五、推進步驟(一)10月20至...
-
設計快樂敘事作文
常常有同學問我,你怎麼總是樂呵呵的,難道就沒有一點兒煩惱嗎?怎麼沒有?我想周遊世界,可兜裡沒錢;我想門門功課拿“優”,可是事與願違;我想當作家,可是沒那份才華;我想……然而,苦惱又有何用?媽媽曾告訴我,她小時候誰家結婚,分四粒喜糖是難得的喜事,兄弟姐妹一人一粒,花花綠綠的...