zoukankan      html  css  js  c++  java
  • CF1059B Forgery

    思路:

    若某个位置是‘.’,说明不能在周围的8个位置下笔。在所有可以下笔的位置填充一次,看能否“包含”需要的图案即可。

    实现:

     1 #include <iostream>
     2 using namespace std;
     3 const int dx[8] = {1, 0, -1, 0, 1, 1, -1, -1};
     4 const int dy[8] = {0, 1, 0, -1, 1, -1, 1, -1};
     5 char a[1005][1005], b[1005][1005];
     6 int ok[1005][1005];
     7 int main()
     8 {
     9     int n, m;
    10     while (cin >> n >> m)
    11     {
    12         for (int i = 0; i < n; i++)
    13         {
    14             for (int j = 0; j < m; j++)
    15             {
    16                 cin >> a[i][j];
    17                 if (i == 0 || i == n - 1 || j == 0 || j == m - 1)
    18                     ok[i][j] = 0;
    19                 else ok[i][j] = 1;
    20             }
    21         }
    22         for (int i = 1; i < n - 1; i++)
    23         {
    24             for (int j = 1; j < m - 1; j++)
    25             {
    26                 if (a[i][j] == '.')
    27                 {
    28                     for (int k = 0; k < 8; k++)
    29                     {
    30                         int nx = i + dx[k], ny = j + dy[k];
    31                         ok[nx][ny] = 0;
    32                     }
    33                 }
    34             }
    35         }
    36         for (int i = 0; i < n; i++)
    37         {
    38             for (int j = 0; j < m; j++)
    39             {
    40                 if (ok[i][j])
    41                 {
    42                     for (int k = 0; k < 8; k++)
    43                     {
    44                         int nx = i + dx[k], ny = j + dy[k];
    45                         b[nx][ny] = '#';
    46                     }
    47                 }
    48             }
    49         }
    50         bool flg = true;
    51         for (int i = 0; i < n; i++)
    52         {
    53             for (int j = 0; j < m; j++)
    54             {
    55                 if (a[i][j] == '#' && b[i][j] != '#')
    56                 {
    57                     flg = false; break;
    58                 }
    59             }
    60         }
    61         cout << (flg ? "yes" : "no") << endl;
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    雷霆战机
    各种 Python 库/模块/工具
    redis
    25
    为什么Python中“2==2>1”结果为True
    thinkphp3.2路由美化,url简化
    thinkphp调整框架核心目录think的位置
    thinkphp3.2中开启静态缓存后对404页面的处理方法
    thinphp中volist嵌套循环时变量$i 被污染问题,key="k"
    thinkphp中如何是实现多表查询
  • 原文地址:https://www.cnblogs.com/wangyiming/p/9748328.html
Copyright © 2011-2022 走看看