数学建模社区-数学中国

标题: 2019第十届蓝桥杯B组决赛题解第五题 [打印本页]

作者: 杨利霞    时间: 2019-6-28 15:58
标题: 2019第十届蓝桥杯B组决赛题解第五题
2019第十届蓝桥杯B组决赛题解第五题: u9 \* z+ q+ v# }/ X
在一个5*5的方格上走边界点,其实也就是6*6的图,从左上角开始走,不走重复点且在12步之内走回左上角点,问方案数, I9 k8 l" y/ {0 _% H4 w' Q
直接dfs,需要减掉 (0,0)->(1,0)->(0,0)和(0,0)->(0,1)->(0,0),这两个路线都重合了& Q& j+ L, Q" i- M% g. }& A. {
结果: 208-2=206    & @5 a4 Y' N& x! ~3 y
代码:
& z, P; D, z0 G) j# m3 u#include<bits/stdc++.h>+ T6 t8 @) y& V
#define mem(a,b) memset(a,b,sizeof(a))
5 D* v7 {8 o1 W$ m& j, m% T3 vusing namespace std;6 J0 O+ e0 h0 P3 b
typedef long long ll;
! d3 h. T# }( K! j, xconst int inf = 0x3f3f3f3f;
' z4 ?- H- M/ [const int maxn = 3e5+55555;3 C/ H3 o, h; U" G$ v
const ll mod = 998244353;# j; U! v. [0 K. [2 e
const double eps = 1e-7;
) q. _1 l7 f0 N: p/ L& q+ `6 L( x( x; p: n8 W5 P+ t7 _  E
bool vis[10][10];
, k$ n; R0 X* {int ne[4][2] = {1,0,-1,0,0,1,0,-1};" d( k. w  y) z$ i4 x, I
int ans;
( ^, T; {7 Y. |$ R8 R
) a. k" U; K$ g/ A3 \0 x7 _void output() {
# f6 q1 [# S- A" y1 [    for(int i = 1;i<= 6;i++) {
2 W/ ~, Q* o  W- A6 Y0 J- t, E& a        for(int j = 1;j<= 6;j++) {
' _! N" r: O' m8 q* }* U$ d% C            cout<<vis[j]<<' ';
' @$ S/ P$ {9 ~$ v$ X1 Q( Q        }
% a+ k8 z3 i+ G5 |( g        cout<<endl;
5 U/ T# G0 [8 P5 D( I1 e    }
3 D/ J& y0 L8 f. M4 ~8 `0 i    cout<<endl<<endl;
/ ]6 l8 [; V5 U, l' ^5 x}/ Z6 B% i7 n3 s5 N- `
# r4 E9 o3 P" H, R
void dfs(int x,int y,int step) {) G/ H& Q# \* V0 z9 o# g( x" Y1 ^; y
    if(step> 6) {
3 y5 S9 y/ h" D        return ;7 t9 Z% P4 m; E  P  ]& y9 P* D2 H$ v
    }
! _3 A: @! c- F  }# Q3 G; @3 G    if(x == 1&&y == 1&&vis[1][1] == true) {! }. O* Q/ L/ w4 j/ |) g+ O
        ans++;
0 d2 b& c3 M# G! o$ G7 u: S4 y) ~/ |/ u        output();
: E/ U6 t7 H3 E& W( ?( j        return ;
2 G  ]6 t$ a% a# u  ^5 o    }
. Y9 E6 B# z: s8 K0 P    for(int i = 0;i< 4;i++) {: l& M" p4 B2 e
        int tx = x+ne[0];
8 S# `  _# ^# }2 R" U- j        int ty = y+ne[1];( n2 C8 |" M# d( E
/ g& O( N3 ~  T3 z# u
        if(x> 6||y> 6||x< 1||y< 1||vis[tx][ty]) continue;& w8 \' x1 d' K/ \8 @* B
        vis[tx][ty] = true;
( n+ d. y( \7 P  Y" w6 d  M        dfs(tx,ty,step+1);- u$ G6 i" d5 I  P. c
        vis[tx][ty] = false;- e& y5 |3 V0 k( W  K' J7 G$ l- s
    }
& T% q3 J. c* z  \    return ;
5 P# z& X  v4 d8 M$ K* d}$ Y" y/ e5 s# W" Q  l
1 {0 [: J6 h$ |1 k/ E: h
int main() {
  a' W8 n1 |# q( o6 h6 s0 Z* U    dfs(1,1,0);$ f) E" y( M9 m- T. |0 z) A
    cout<<ans<<endl;, t! ]9 Z! q7 u2 g6 G

" D' ]; ~9 H; _/ L0 p7 M4 D1 b    return 0;  Q) B% T: f3 {
}
" x9 c1 p5 s& ?* d: i% F--------------------- * p$ s# h# r: B1 k( L$ }
作者:nka_kun
" Y+ @: V7 T$ b. E+ T来源:CSDN
0 z! n- ~' X; |4 u" c* ?" U0 `9 D( Q; E: Z0 d
% [  K; H  q, ?6 L' Q





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5