1樓:匿名使用者
你的描述跟圖不一樣啊。。反正這是按照你的描述寫的這是我的程式的限定:路徑從左到右(你這裡沒有設定)#include
#include
#include
using namespace std;
char map[55][55];
bool vis[55][55];
int dx[5]=,dy[5]=;
vectorpath;
int n,m;
char no='x';
inline void dfs(int x,int y)vis[x][y]=true;
path.pop_back();
}int main()
for(int i=1;i<=n;i++)if(!vis[i][1] && map[i][1]!=no)dfs(i,1);
return 0;}
2樓:拓旁網
可以參考下
關於c++迷宮問題,尋找一條通路穿越迷宮(找到一條即可)。要求寫出乙個遞迴程式來穿越迷宮。
3樓:**夢幻
題目有問題:如何指定迷宮的起點和終點。
我這裡假設迷宮某個邊界位置是起點,(x, y)是否是終點要用gotgoal(x, y)函式判斷。
核心函式
void dfs(char *m, int height, int width, int x, int y, int now_dir)
這裡m是乙個一維陣列,表示迷宮。格點x, y的資訊是m[y * width + x]
比如3行4列的迷宮
在m裡就是#####.....##,每一行緊接著上一行。
height 迷宮高度
width 迷宮寬度
x是當前位置橫座標。右邊是正方向。
y是當前位置縱座標。下方是正方向。
now_dir是是當前的方向。你需要給上下左右4個方向規定乙個編號。
比如int dir_list[4][2] = , // 地圖左
, // 地圖上
, // 地圖右
// 地圖下
};// 第乙個數表示恆座標變化量,第二個數表示縱座標變化量
那麼對於當前方向now_dir,「摸著右手邊的牆」的探索方向編號依次是(可以參照上面dir_list的註釋來理解)
(now_dir + 1) % 4 當前方向右側
(now_dir + 0) % 4 當前方向
(now_dir - 1 + 4) % 4 當前方向左側
(now_dir - 2 + 4) % 4 當前方向反方向(回頭)。(這裡要+4是為了防止now_dir減去數字後變成負數,負數除以4的餘數還是負數)。
使用dfs的方法:
先將地圖資訊儲存到char陣列裡,作為dfs函式第一引數
將迷宮入口橫座標儲存到x引數,縱座標儲存到y引數
將剛進入迷宮的方向的編號(dir_list的第一下標)儲存到now_dir
dfs的基本實現(偽**)
void dfs(char *m, int height, int width, int x, int y, int now_dir)
return;
}注意:
這個問題由於不涉及最短路,而且每走一步都算走過,包括走進了死胡同。因此這個問題完全不需要用遞迴,實際上程式也不可能回溯,因為每一步都是對的。直接用for或while迴圈就行了。
用遞迴,當路線比較長時,可能超過作業系統限制而報錯。
對於有環路的迷宮,程式會死迴圈。
如果要判斷出死迴圈的情況,需要乙個額外的陣列int m_arrived[4],儲存每個位置的每個方向是否走過。一開始都是0,走過m[i]且方向是dir的時候,m_arrived[i][dir] = 1即可。
有不明白的地方請追問。
4樓:匿名使用者
這個問題其實可以看成搜尋問題
如果你會用棧或者佇列,就可以用深度優先或者廣度優先去找一條通路。
如果不會棧或者佇列,那麼就用回溯法遞迴解決。
求大神用c++編寫乙個迷宮遊戲程式。
求乙個可以執行的迷宮程式,要求是用c++編寫的
5樓:匿名使用者
要求過高,我承認我技術很差,但是樓上的好像執行時有錯誤...
6樓:
你的輸入輸出都沒給出來,別人怎麼幫你編啊?
c++程式設計問題:編乙個迷宮遊戲程式
7樓:程式小兵
在書找的,只打了個結構體(太多了),我利用stack做的!希望能對你有所幫助!程式如下:
typedef structselemtype;//stack的元素型別
status mazepath(mazetype maze,postype start,postype end)
else
if(e.di<4)//if
}//if
}//else
}while(!stackempty(s));
return(false);
}//mazepath
求個c++編寫的走迷宮遊戲程式,要能執行出來的
8樓:匿名使用者
問問是自創地圖還是咋地
我有乙個
是要改地圖的
求c 大神幫忙寫c 程式!!謝謝
請問是先輸入矩陣a再輸入向量x嗎?我沒做資料測試,你自己試一下看看可不可以,有問題我再改。include include include include define maxn 100 5 using namespace std typedef long long ll struct matrix ...
求大神幫忙寫C 程式!有懸賞的!!跪求
include class teacher class professor public teacher int salary void print int money int salary void print int money int salary void print int money v...
C語言程式問題,求高手 C語言問題,求大佬解答
我嫌麻煩是否可以把print star 換成別的字母 是可以的,可以按照你說的換成void a 也行。這只是初學者用用。你以後開發大程式,這麼多函式,你能分得清什麼函式做什麼用麼?所以要養成好習慣。括號是帶參。下劃線也沒有什麼固定的意義,就是增加程式的可讀性。不懂再問。望 可以。裡面是用來放引數的 ...