馬踏棋盤c報告

2022-03-09 23:13:01 字數 1765 閱讀 7403

4、輸出路徑函式模組——輸出馬兒行走的路徑;

各模組之間的呼叫關係:

輸入的初始位置是否正確否是

(二)、詳細設計

(1)、定義標頭檔案和預定義

#include<>

#define maxsize 100

#define n 8

(2)、資料型別定義

int board[8][8定義棋盤

int htry1[8]=;

/*儲存馬各個出口位置相對當前位置行下標的增量陣列*/

int htry2[8]=;

儲存馬各個出口位置相對當前位置列下標的增量陣列*/

struct stack定義棧型別

int i行座標

int j列座標

int director儲存方向

}stack[maxsize定義乙個棧陣列

int top=-1棧指標

(3)、函式宣告

void initlocation(int xi,int yi); //馬兒在棋盤上的起始位置座標

int trypath(int i,int j馬兒每個方向進行嘗試,直到試完整個棋盤

void display輸出馬兒行走的路徑

(4)、起始座標函式模組

void initlocation(int xi,int yi)

(5)、探尋路徑函式模組

int trypath(int i,int j)

for(h=0;h<8;h根據可行路徑條數小到大按下表排序放入陣列d[8]中

director=stack[top].director;

if(top>=63如果走完整個棋盤返回1

return (1);

find=0表示沒有找到下乙個位置

for(h=director+1;h<8;h++) //向八個方向進行探尋

else否則退棧

}return (0);

}(6)輸出路徑函式模組

void display()

printf("\n");

}(5)主程式模組

void main()

printf("begin with %d board:\n\n", 8*(x-1)+y);

initlocation(x-1,y-1呼叫起始座標函式

}五、除錯分析

(1)、本次實驗的主要目的是在於掌握和理解棧的特性和它的應用。在編制該程式中遇到了很多問題。首先,在開始剛編制程式的時候遇到的問題是,程式編譯都通不過,主要在一些細節的問題上,還有在程式的返回值在剛開始時也沒有正確返回。

經過編譯慢慢除錯,編譯都能通過,沒有錯誤和警告。

(2)、雖然編譯都能通過,但是執行時卻出錯,程式不能終止,只有通過人工方式結束程式,可能是在某些地方出現了無限死迴圈了,然後在仔細檢查**,發現沒有標記馬兒嘗試的方向director,這樣的話,馬兒回溯的時候,下一次又有可能走那個方向,這樣就出現了死迴圈。

(3)、標記好馬兒嘗試的方向後,編譯執行,但是執行結果卻不符合程式所要求的結果,說明在演算法上肯定有錯誤,檢查發現,馬兒走的座標沒有控制後,它的橫縱座標必須控制0到7之間,否則的話馬兒就會踏出棋盤以外,這樣輸出的結果就不對。還有就是棋盤走過的位置要標記一下,以便下次走不重複走,當回溯的時候的記得把標記給清掉,這個地方有時候也很容易混淆。

(4)、還有一點就是,該程式運算量大,演算法複雜度高,所以執行的時候很慢,特別佔記憶體,cpu的使用也很高,幾乎都在70%到90%之間,配置低了可能還執行不了。

六、執行結果

結果1:

結果2:

七、實驗體會

馬踏小學「五一」期間安全隱患整改總結

馬踏小學2014年 五一 安全隱患整改總結根據上級有關檔案要求,我校於2014年4月28日組織了學校行政領導對安全隱患進行了排查。在排查中發現了許多隱患,分管學校安全的楊月燕老師都一一作了安全隱患筆錄。並通過開行政會議研究討論,並歸納總結出我校安全隱患的排查報告,共同提出了整改意見和建議。在 五一 ...

棋盤井實驗小學少先隊調研報告

記棋盤井第一小學少先隊習慣經營人生 棋盤井第一小學始建於1974年,是一所蒙漢合校,是棋盤井地區建校最早,文化底蘊深厚的一所學校。學校以 為學生的終身幸福和發展奠定基礎 的辦學理念為基礎,高舉 尊重個性 因材施教 以人為本 全面發展 的辦學目標,以 習慣經營人生,特長成就未來 為辦學特色,紮實開展工...

基於ArcGIS的棋盤製作實習報告

上海師範大學地理資訊系統專業 棋盤製作實習報告 基於arcgis製圖 孫文軍2013 10 22 基於國際數棋的棋盤資料和arcgis的製圖功能,實現棋盤的製作和整飾。棋盤製作實習報告 孫文軍2013 10 15 一 實習目的 通過製作棋盤來熟悉arcgis 的製圖功能。二 實習步驟 1 選擇棋盤 ...