一筆畫貓遊戲輔助器DFS

2021-09-19 18:04:59 字數 2355 閱讀 8569

二、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 表示測試資料的組數。每組測試資料的第一...