2019第十届蓝桥杯B组决赛题解第五题 : k* T* Z+ f5 j在一个5*5的方格上走边界点,其实也就是6*6的图,从左上角开始走,不走重复点且在12步之内走回左上角点,问方案数8 a+ X8 M4 V0 e. c4 T; r
直接dfs,需要减掉 (0,0)->(1,0)->(0,0)和(0,0)->(0,1)->(0,0),这两个路线都重合了 % Z6 L. b; [ v9 Y# U; @结果: 208-2=206 5 d/ F& {7 p8 i* g
代码: ) H |. T* N1 r, l+ [" G) `#include<bits/stdc++.h> 8 ?) M5 E4 G. s6 J- z#define mem(a,b) memset(a,b,sizeof(a)) ) Q" E9 F' G2 s% I2 ~ ]+ Busing namespace std;' H- m4 P" M8 ]: E
typedef long long ll; * h/ w2 M( p v7 `9 q' f: H. yconst int inf = 0x3f3f3f3f;% X% O; c" B# l/ j4 F3 {8 h
const int maxn = 3e5+55555; 3 S* C3 y0 \- b/ o( q% {9 Q. Wconst ll mod = 998244353; 7 z0 D$ c/ Q/ k) Tconst double eps = 1e-7;) u5 u: d) Z7 x! f, f2 [% q! v6 X" m& R
' K0 G3 r% p! R( {& d
bool vis[10][10];( ~' b7 c5 S6 Q; j% d
int ne[4][2] = {1,0,-1,0,0,1,0,-1};& B( [3 u. U0 s3 W0 C2 i
int ans;8 J% S* a4 ?3 l0 C4 O6 D
, i& U, o1 J# ~: T Q8 Gvoid output() { ; g0 L! ^! w( L8 V for(int i = 1;i<= 6;i++) {, Q. N. y' K" d" Q. @ s
for(int j = 1;j<= 6;j++) {/ J' m' p! p$ U/ n
cout<<vis[j]<<' '; 3 ?5 D' J' \, q }. `+ o/ I: A$ H/ C0 i
cout<<endl;- Z0 a: B" {" C" C8 I2 Q7 R! E
}: ~: e2 u' F% _3 B
cout<<endl<<endl; . y+ R7 N; Y% z+ l: d j8 C} ( v& K/ X2 Q# N, c) B" T t* l* ]+ R0 T, A2 F
void dfs(int x,int y,int step) { : p5 {2 t {# }& I& S* C! o if(step> 6) { 7 y2 J, x4 K J+ W& C return ; 4 n/ A! W. H0 O) E0 E" R5 V% b } + g) n# w$ @ e5 R: x* M if(x == 1&&y == 1&&vis[1][1] == true) {- t8 [" F& b! J/ M+ q- ^
ans++;- L. W \9 _7 \3 O
output(); 0 g1 J& E4 ]* v, S( L return ;! Q, ^1 D& E! y5 A5 p; i8 m0 e/ B1 p
} ) p2 \, Z4 ?+ w/ e- b% A for(int i = 0;i< 4;i++) { . u% l# W) V/ | K. R A5 ^2 m int tx = x+ne[0];' K* v2 ~- C. f, i
int ty = y+ne[1];8 |' o0 k* Z' U4 ^9 p
& t$ ^! K1 z5 M6 S, M/ y' r
if(x> 6||y> 6||x< 1||y< 1||vis[tx][ty]) continue;4 }7 J1 l4 h% z" a" E
vis[tx][ty] = true; ) T& \( {) S3 {/ R dfs(tx,ty,step+1);/ o8 A2 Y8 K: g4 ?
vis[tx][ty] = false;% L. L- P I I* b7 A; q+ t
} ! _* {* _, [4 r$ s0 B return ; ! T9 ~' o0 H/ Q, @} , z% g7 r4 V% u) n$ F! e& _* o2 I [' w
int main() { ( r1 o3 v6 C+ z2 p dfs(1,1,0);5 {* F0 H& B o
cout<<ans<<endl;- A$ R p+ x4 O/ `
5 N, @8 X7 o& |' N$ [! z" P return 0;- m' D( t. w* | x6 Z' x! K
}4 H5 g) u. g0 q. P$ T3 {- Q
--------------------- 5 ~0 \8 K" i$ l3 g4 P- ]& k1 H
作者:nka_kun 8 e, c }) Y. f, c, f( |来源:CSDN ) x k3 g% W/ _6 y