dfs的特點是先去找結束的條件,在未結束的前提下進行再一次的搜尋。
「s」是起點,「d」是終點,「」是障礙物,「.」是可以走的路初學所寫的未經過優化的**5 6…s
.*….….
.**.
.d…
#include
using
namespace std;
bool vis[
100]
[100];
char gra[
100]
[100];
int m, n;
//m行n列
intin
(int x,
int y)
bool
dfs(
int x,
int y)
tx = x, ty = y -1;
if(in(tx, ty)
&& gra[tx]
[ty]
!='*'
&&!vis[tx]
[ty]
) tx = x +
1, ty = y;if(
in(tx, ty)
&& gra[tx]
[ty]
!='*'
&&!vis[tx]
[ty]
) tx = x, ty = y +1;
if(in(tx, ty)
&& gra[tx]
[ty]
!='*'
&&!vis[tx]
[ty]
) vis[x]
[y]=0;
gra[x]
[y]=
'.';
return
false;}
intmain()
for(
int i =
0; i < m; i++)if
(dfs
(x, y)
) cout << endl;}}
else cout <<
"no"
<< endl;
return0;
}
因為該**有太多重複的片段,所以我們可以用方向向量進行優化。
#include
using
namespace std;
bool vis[
100]
[100];
char gra[
100]
[100];
int m, n;
//m行n列
int dir[4]
[2]=
,,,}
;intin(
int x,
int y)
bool
dfs(
int x,
int y)
} vis[x]
[y]=0;
gra[x]
[y]=
'.';
return
false;}
intmain()
for(
int i =
0; i < m; i++
)//尋找起點if(
dfs(x, y)
)//開始搜尋
cout << endl;}}
else cout <<
"no"
<< endl;
return0;
}
jxj去參觀了乙個迷宮,迷宮裡有nn個通道:1."+「上下左右四個方向均可以通過
2.」-「僅左右兩個方向可以通過
3.」|"僅上下兩個方向可以通過
迷宮的入口在左上角,現在jxj在打算走一遍這個迷宮,由於他知道迷宮的出口在右下角,所以愛鑽牛角尖的jxj只打算走右和下兩個方向,但是他又很懶,如果他無法走出迷宮,他將原路返回並放棄走迷宮,所以他現在急需知道是否能走出迷宮,你能幫他算一下嗎?
輸入格式:
多個樣例,最多20個樣例,每個樣例第一行輸入乙個整數n(1n,第二行到第n+1行,每行n個字元,表示迷宮的通道。
輸出格式:
每行輸出"yes"或"no",如果能走出迷宮輸出"yes",不能走出迷宮就輸出"no"。
輸入樣例:2+|
-+2-+|+
輸出樣例:
noyes
hint
樣例解析:第乙個樣例』+『不能向右到』|』,也不能向下到』-』,第二個樣例可由』-『向右到』+』,再向下到』+』
#include
using
namespace std;
char gra[12]
[12];
int n;
intin
(int x,
int y)
bool
dfs(
int x,
int y)
intmain()
return0;
}
這裡簡稱跳馬問題「#」是障礙物,「s」是起點,「t」是終點,「.」是可以走的路
/*
10 9 //以下是可以使用的地圖
.#....#s#
..#.#.#..
..##.#..#
......##.
...t.....
...#.#...
...#.....
...###...
.........
.##......*/
#include
using
namespace std;
bool vis[
100]
[100];
int dir[8]
[2]=
,,,,
,,,}
;char gra[
100]
[100];
int m, n;
intin
(int x,
int y)
bool
dfs(
int x,
int y)
} vis[x]
[y]=0;
gra[x]
[y]=
'.';
return
false;}
intmain()
for(
int i =
0; i < m; i++)if
(dfs
(x, y)
) cout << endl;
} cout <<
"yes";}
else cout <<
"no"
<< endl;
return0;
}
初學者談初學者學html
這是乙個段落。解釋一下就是 html 與 html 之間的文字是描述網頁。head 與 head 之間的文字是文件的元資料。title 與 之間的文字是文件的標題。body 與 body 之間的文字是可見的頁面內容,是文章的主體部分。h1 與 h1 之間的文字被顯示為乙個大標題。p 與 p 之間的文...
初學者mysql MySQL初學者使用指南
有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...
初學者 遞迴
program xuexi3 implicit none integer,external fact 呼叫函式需要寫external 待定 integer n write n read n write fact n stop endrecursive integer function fact n ...