這題跟以往的dfs不同的是,它是單向的dfs(因為我做題少,所以第一次見到這種型別的題目)。
思路很簡單,但是對於第一次做這種單向dfs的我來說(我蒻),開始確實感覺無從下手。
這道題目和以往的dfs不同的地方在於,dfs的方向是在外面判斷的,然後還要記錄路徑,路徑記錄全了才能往vis裡面加true。
直接看**吧,這道題應該只有我才會不做了。
#include using namespace std;
typedef pairp;
const int maxn = 110;
char g[maxn][maxn];
int vis[maxn][maxn];
int dx=;
int dy=;
mapmp;
int n;
struct node
c[maxn];
void init()
void dfs(int x,int y,int k,int stp)
return;
} int nowx = x+dx[k];
int nowy = y+dy[k];
if(nowx>=1 && nowx<=n && nowy>=1 && nowy<=n) }
}int main()
else
}} for(int i=1;i<=n;i++)}}
} for(int i=1;i<=n;i++)
{ for(int j=1;j<=n;j++)
{if(vis[i][j])
{coutps:確實寫題解可以幫助理解**。空想是不行的啊!
洛谷 P1101 單詞方陣(dfs)
dfs 題目描述 給一nxn的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間 color red 可以 color 交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單...
洛谷P1101 單詞方陣 DFS
給一n times nn n的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 qy...
洛谷 P1101 題解
這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...