水管工遊戲 啊哈演算法

2022-09-16 23:21:22 字數 1113 閱讀 3372

一塊矩形土地被分隔n*m的單位正方形,現在這塊土地上已經埋設一些水管,水管將從座標(1,1)的矩形土地的左上角左部邊緣,延伸到座標(n,m)的矩形土地的右下角邊緣。水管只有兩種。一種彎的,一種直的。 

每種管道將佔據乙個單位正方形土地。你現在可以旋轉這些管道,使得其構成乙個管道系統。標有樹木的方格表示這裡沒有管道。 

輸入的第一行為兩個整數n和m,接下來輸入n行,每行有m個整數,表示地圖中的每乙個格仔。其中0表示樹木,1-6表示管道的六種不同的擺放方式。

1 #include2

int a[51][51];3

int book[51][51],n,m,flag=0;4

struct

notes[100];//

加入乙個棧,便於將結果列印出來

7int top=0;8

void dfs(int x,int y,int

front)

15if(x<1||x>n||y<1||y>m)//

判斷是否越界

16return;17

if(book[x][y]==1)//

判斷是否使用過該路徑

18return

;19 book[x][y]=1

;20 top++;//

結果入棧

21 s[top].x=x;

22 s[top].y=y;

23//

當前水管是直管的情況

24if(a[x][y]>=5&&a[x][y]<=6)28

if(front==2

)29 dfs(x+1,y,2

);30

if(front==3

)31 dfs(x,y-1,3

);32

if(front==4

)33 dfs(x-1,y,4

);34}35

if(a[x][y]>=1&&a[x][y]<=4)40

if(front==2)44

if(front==3)48

if(front==4)52

}53 book[x][y]=0

;54 top--;

55return;56

}57intmain()

啊哈演算法 水管工遊戲

遊戲大致規則是 一塊矩形土地被分成n m的單位正方形,現在這塊土地已經埋設了一些水管。水管將從矩形土地的左上角左部邊緣,延伸到右下角右部邊緣。水管只有兩種 彎管和直管 彎管有四種狀態 直管有兩種狀態 0,1,2,3,4,5,6分別表示 0表示樹木,1,2,3,4表示彎管四種狀態。5,6表示直管兩種狀...

水管工遊戲

1 題目 水管工遊戲是指如下圖中的矩陣中,一共有兩種管道,乙個是直的,乙個是彎的,所有管道都可以自由旋轉,最終就是要連通入水口可出水口。其中的樹為障礙物。2 演算法思路 本題使用的是深度優先搜尋演算法,先標識入水口方向,在每次探索新管道的時候上根據入水口方向進行擴充套件,然後根據管道的型別來判斷下乙...

4 6水管工遊戲

include includeusing namespace std int a 51 51 假設徒弟的大小不超過50 50 int book 51 51 n,m,flag 0 struct notes 100 int top 0 void dfs int x,int y,int front 判斷這...