zoukankan      html  css  js  c++  java
  • 蓝桥杯 剪邮票

    思路:dfs每个格子选或不选,选定5个格子后判连通。这样写好像不会漏情况。结果是116

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 int map[3][4];
     5 int temp_map[3][4];
     6 bool in[3][4];
     7 int dx[4] = {0,1,0,-1};
     8 int dy[4] = {1,0,-1,0}; 
     9 void dfs_connected(int x,int y)
    10 {
    11     temp_map[x][y] = false;
    12     for(int k = 0;k < 4;k ++)
    13     {
    14         int nx = x + dx[k];
    15         int ny = y + dy[k];
    16         if(nx >= 0 && nx < 3 && ny >= 0 && ny < 4 && temp_map[nx][ny])
    17         {
    18             dfs_connected(nx,ny);
    19         }
    20     }
    21 }
    22 int dfs(int x,int y,int cur)
    23 {
    24     if(x == 3)
    25         return 0;
    26     if(cur == 5)
    27     {
    28         for(int i = 0;i < 3;i ++)
    29         {
    30             for(int j = 0;j < 4;j ++)
    31             {
    32                 temp_map[i][j] = in[i][j];
    33             }
    34         }
    35         int cnt = 0;
    36         for(int i = 0;i < 3;i ++)
    37         {
    38             for(int j = 0;j < 4;j ++)
    39             {
    40                 if(temp_map[i][j])
    41                 {
    42                    dfs_connected(i,j);
    43                    cnt ++;    
    44                 } 
    45             }
    46         }
    47         if(cnt > 1)
    48             return 0;
    49         return 1;
    50     } 
    51     int nx;
    52     int ny;
    53     int cnt = 0;
    54     if(y < 3)
    55     {
    56         ny = y + 1;
    57         nx = x; 
    58     }
    59     else
    60     {
    61         ny = 0;
    62         nx = x + 1;
    63     }
    64     if(x == -1 && y == 0)
    65     {
    66         nx = ny = 0;
    67     }
    68     in[nx][ny] = true;
    69     cnt += dfs(nx,ny,cur + 1);
    70     in[nx][ny] = false;
    71     cnt += dfs(nx,ny,cur);
    72     return cnt;
    73 }
    74 int main()
    75 {
    76     cout << dfs(-1,0,0) << endl;
    77     return 0;    
    78 } 
  • 相关阅读:
    set的使用
    this.$watch(),this.$set(),this.$nextTick()=>{})
    web 错误代码解析
    samba 问题解决
    Linux postfix配置方法
    Linux rhcsa认证考试试题模拟
    Linux 使用nmcli配置网络
    Linux 链路聚合
    Linux ISCSI服务配置
    Linux Apache配置https访问
  • 原文地址:https://www.cnblogs.com/wangyiming/p/5299590.html
Copyright © 2011-2022 走看看