傳送門
這道題可以用dfs回溯來做,難點是沿著同一方向擺放。所以我想的是,如果是』y』那麼就沿著四面八方搜尋,確定方向,然後每一次就按照這個固定的方向。
#include
using
namespace std;
const
int maxn=
1e2+10;
char a[maxn]
[maxn]
,s[10]=
;int n,dx[10]
=,dy[10]
=;bool ok1[maxn]
[maxn]
,ok2[maxn]
[maxn]
;void
dfs(
int k,
int x,
int y,
int p)
return;}
ok1[x]
[y]=
true;if
(p==0)
}}else
} ok1[x]
[y]=
false;}
intmain()
for(
int i=
1;i<=n;i++
) cout<}}
原理相同,下面的可能更好看一些
#include
using
namespace std;
const
int maxn=
1e2+10;
char a[maxn]
[maxn]
,s[10]=
;int n,dx[10]
=,dy[10]
=;bool ok1[maxn]
[maxn]
,ok2[maxn]
[maxn]
;void
dfs(
int k,
int x,
int y,
int p)
return;}
int tx=x+dx[p]
,ty=y+dy[p];if
(tx>=
1&&tx<=n&&ty>=
1&&ty<=n&&a[tx]
[ty]
==s[k+1]
)}intmain()
}for
(int i=
1;i<=n;i++
) cout<}}
P1101 單詞方陣
給一nxn的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間 color red 可以 color 交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8...
P1101 單詞方陣
題目鏈結 題目描述 給一 n n 的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 ...
P1101 單詞方陣
給一 n times nn n 的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 ...