資源描述:
《c語言實現(xiàn)迷宮最優(yōu)路徑選擇》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、中國計量學院實驗報告實驗課程:算法與數(shù)據(jù)結構實驗名稱:迷宮的最優(yōu)路徑班級:學號:姓名:實驗日期:2013-5-20一.實驗題目:輸入一迷宮查找并輸出迷宮的最優(yōu)路徑實驗成績:指導教師:一.算法說明1.定義一個結構體來表示起點和末點的坐標,定義一個數(shù)組來存放迷宮.structelem{intx;//行inty;//列};//定義結構體intM[10][10];2.給數(shù)組中空白處賦上從起點到該處步驟的值.intfind(intn){for(i=0;i<9;i++)for(j=0;j<10;j++){if(M[i][j]==n){{if(M[i][j+1]
2、==0)M[i][j+1]=n+1;elseif(M[i][j+1]>n+1)M[i][j+1]=n+1;}{if(M[i+1][j]==0)M[i+1][j]=n+1;elseif(M[i+1][j]>n+1)M[i+1][j]=n+1;}{if(M[i][j-1]==0)M[i][j-1]=n+1;elseif(M[i][j-1]>n+1)M[i][j-1]=n+1;}{if(M[i-1][j]==0)M[i-1][j]=n+1;elseif(M[i-1][j]>n+1)M[i-1][j]=n+1;}}}}3.給最優(yōu)路徑附上特定的值,方便最后的
3、輸出.for(;;){if(M[q.x+1][q.y]==(n-1)){q.x++;M[q.x][q.y]=0;}else{if(M[q.x][q.y-1]==(n-1)){q.y--;M[q.x][q.y]=0;}else{if(M[q.x-1][q.y]==(n-1)){q.x--;M[q.x][q.y]=0;}elseif(M[q.x][q.y+1]==(n-1)){q.y++;M[q.x][q.y]=0;}}}n--;if(e.x==q.x&&e.y==q.y){M[e.x][e.y]=0;break;}}一.測試結果二.分析與探討程序結果
4、正確,但是沒有涉及到棧內(nèi)容,使用??梢詫Τ绦蜻M一步改進。三.附錄:源代碼中國計量學院實驗報告#include#includestructelem{intx;//行inty;//列intdi;//方向,di=1代表右,di=2代表下,di=3代表左,di=4代表上};//定義結構體structeleme,q;intM[10][10]={{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{-1,0,0,-1,0,0,0,-1,0,-1},{-1,0,0,-1,0,0,0,-1,0,-1},{-1,0,
5、0,0,0,-1,-1,0,0,-1},{-1,0,-1,-1,-1,0,0,0,0,-1},{-1,0,0,0,-1,0,0,0,0,-1},{-1,0,-1,0,0,0,-1,0,0,-1},{-1,0,-1,-1,-1,0,-1,-1,0,-1},{-1,-1,0,0,0,0,0,0,0,-1},{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}};intn=1,i,j;//從起點到某個位置的步驟intfind(intn){for(i=0;i<9;i++)for(j=0;j<10;j++){if(M[i][j]==n){{if(M
6、[i][j+1]==0)M[i][j+1]=n+1;elseif(M[i][j+1]>n+1)M[i][j+1]=n+1;}{if(M[i+1][j]==0)M[i+1][j]=n+1;elseif(M[i+1][j]>n+1)M[i+1][j]=n+1;}{if(M[i][j-1]==0)M[i][j-1]=n+1;elseif(M[i][j-1]>n+1)M[i][j-1]=n+1;}{if(M[i-1][j]==0)M[i-1][j]=n+1;elseif(M[i-1][j]>n+1)M[i-1][j]=n+1;}}}}intmain(voi
7、d){intk;/*printf("請輸入迷宮:");for(i=0;i<10;i++)for(j=0;j<10;j++)scanf("%d",&M[i][j]);*/printf("迷宮為:");for(i=0;i<10;i++)//顯示迷宮for(j=0;j<10;j++){if(M[i][j]==-1)printf("#");elseprintf("");if(j==9)printf("");}printf("請輸入入口的橫縱坐標:");scanf("%d%d",&e.x,&e.y);if(M[e.x][e.y]==-1){p
8、rintf("迷宮走不通");}M[e.x][e.y]=n;printf("請輸入出口的橫縱坐標:");scanf