二、c++
0代表通道,1代表無路
000
0100
1000
0000
0000
0
n行m列
矩陣起點位置:1行1列
終點位置:1行4列
終點位置:得自己判斷在哪
540
0001
0010
0000
0000
0001114
w:往上
a:往左
s:往下
d:往右
#:牆o:終點
***
****
****
****
***路徑1**
****
****
****
****
d s # o
# s w #
s a w a
s d s w
d w d w
對應
//1和0的迷宮矩陣
int vis[10]
[10];
//記錄迷宮中的某個位置是否訪問過
char direct[10]
[10];
//wasd的方向結果矩陣
int n,m;
int ox,oy;
//起點位置
int ex,ey;
//終點位置
int points=0;
//記錄所遍歷的點的數量
int dir[4]
[2]=
,,,}
;//四個方向
struct point//位置
p;stack path,temp;
//記錄路徑,temp是乙個臨時變數,和path一起處理路徑
int count;
//路徑條數
void
dfs(
int x,
int y)
//x,y:當前位置
cout <<
"******************路徑"
<<
++count <<
"******************"
<< endl;
while
(!path.
empty()
)//將path裡面的點取出來,放在temp裡面
point lastnode;
while
(!temp.
empty()
)else
if(path.
size()
>1)
else
if(p1.x-lastnode.x==-1
)else
if(p1.y-lastnode.y==1)
else
if(p1.y-lastnode.y==-1
)}lastnode.x=p1.x;
lastnode.y=p1.y;
}//輸出wasd矩陣
for(
int i=
0;i) cout<
}return;}
if(x<
0|| x>=n || y<
0|| y>=m)
//越界
return
;//如果到了這一步,說明還沒有成功,沒有出界
for(
int i=
0;i<
4;i++
)//從4個方向探測}}
intmain()
}}cin>>ox>>oy;
cin>>ex>>ey;
vis[ox-1]
[oy-1]
=1;
p.x = ox-1;
p.y = oy-1;
path.
push
(p);
//起點先入棧
dfs(ox-
1,oy-1)
;return0;
}
一筆畫問題
一筆畫問題是在6x6的棋盤上分布著若干點,從紅色起點開始依次不重複地經過每個白色點,已經經過的點可以跨越過去。程式採用深度搜尋,從紅色點開始分別往上 往下 往左和往右邁出第一步,然後沿著當前方向,分別探測左邊 前面和右邊的下一結點,標記已經經過的節點為空。探測到左邊有節點就左轉,然後直行到該節點 如...
一筆畫問題
描述 判斷乙個圖是否能夠用一筆畫下來.規定,所有的邊都只能畫一次,不能重複畫。輸入第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一行有兩個正整數p,q p 1000,q 2000 分別表示這個畫中有多少個頂點和多少條連線。點的編號從1到p 隨後的q行,每行有兩個正整數a,b ...
一筆畫問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。規定,所有的邊都只能畫一次,不能重複畫。輸入 第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一...