[問題] 走迷宮的走(10:52補充)

看板C_and_CPP作者 (cola)時間16年前 (2009/12/29 20:31), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 不知道為什麼 都會跑歪 也就是沒有走該走的最短路線 希望得到的正確結果: 一條路走到底 程式跑出來的錯誤結果: ●●●●●●●●●● ●◎◎◎◎●◎○○● ●◎●◎◎◎●●○● ●○○●●●◎●○● ●●○●◎◎●●○● ●○●●●◎●◎○● ●○○●◎◎◎●◎● ●●○●○●◎◎●● ●○○○○●◎◎◎● ●●●●●●●●●● 滿的圈圈就是牆壁 圈是可以走的路 雙圈是走過的路 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) vc++ 有問題的code: (請善用置底文標色功能) //地圖的設定: 可以走的路是整數0 走過的路設定1// int visit(int map[][10], int i, int j,int success){ map[i][j] = 1; if(map[8][8]==1) success=1; if(success==0 && map[i][j+1] == 0) visit(map, i, j+1,success); if(success==0 && map[i+1][j+1] == 0) visit(map, i+1, j+1,success); if(success==0&& map[i+1][j] == 0) visit(map, i+1, j,success); if(success==0 && map[i+1][j-1] == 0) visit(map, i+1, j-1,success); if(success==0 && map[i-1][j+1] == 0) visit(map, i-1, j+1,success); if(success==0 && map[i-1][j-1] == 0) visit(map, i-1, j-1,success); if(success==0 && map[i][j-1] == 0) visit(map, i, j-1,success); if(success==0 && map[i-1][j] == 0) visit(map, i-1, j,success); return 1; } 補充說明: 謝謝 我有試著去測試 map[i][j] = 1; 後面多放一個算陣列位子 road[++count]=10*i+j; 印出來的結果是 road[1]=0 road[2]=11 road[3]=12 road[4]=13 road[5]=14 road[6]=25 road[7]=36 road[8]=45 road[9]=55 road[10]=66 road[11]=77 road[12]=88 (跑回去了?!?!?!?!) road[13]=87 road[14]=86 road[15]=68 road[16]=76 road[17]=57 road[18]=65 road[19]=64 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.253.108 ※ 編輯: cola1230 來自: 119.77.253.108 (12/29 20:32)

12/29 20:37, , 1F
因為你用的是DFS 要用BFS才能找到確定的最短路徑
12/29 20:37, 1F

12/29 21:51, , 2F
就算是 DFS ... [i-1][j-1] 這種是走斜的耶 很多都不對
12/29 21:51, 2F
※ 編輯: cola1230 來自: 119.77.253.108 (12/29 22:54)

12/29 23:09, , 3F
我發現...success=1之後 進遞迴又變成0
12/29 23:09, 3F

12/29 23:33, , 4F
因為他只傳值, 是傳一份 copy 進去
12/29 23:33, 4F

12/30 00:01, , 5F
不好意思 我路過問個小問題.. 請問出入口在哪邊?
12/30 00:01, 5F

12/30 00:05, , 6F
[1][1]到[8][8]
12/30 00:05, 6F
文章代碼(AID): #1BEVQa9Y (C_and_CPP)