一塊矩形土地被分隔n*m的單位正方形,現在這塊土地上已經埋設一些水管,水管將從座標(1,1)的矩形土地的左上角左部邊緣,延伸到座標(n,m)的矩形土地的右下角邊緣。水管只有兩種。一種彎的,一種直的。
每種管道將佔據乙個單位正方形土地。你現在可以旋轉這些管道,使得其構成乙個管道系統。標有樹木的方格表示這裡沒有管道。
輸入的第一行為兩個整數n和m,接下來輸入n行,每行有m個整數,表示地圖中的每乙個格仔。其中0表示樹木,1-6表示管道的六種不同的擺放方式。
1 #include2int 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 判斷這...