zoukankan      html  css  js  c++  java
  • codeforces B. Fox and Cross 解题报告

    题目链接:http://codeforces.com/problemset/problem/389/B

    题目意思:给出一个由n行n列组成的board,其中'#'表示的一片地方恰好能画满十字架,画满的意思表示:这些十字架不能够共用'#' !当然如果全部都是'.',表示不画十字架。问如果有'#'和'.'的board上,是否恰好能填满所有'#'。能就输出 'YES',否则输入'NO'

          比赛的时候完全没有思路,这是赛后做出来的,参考了别人的思路。

          可以这样想,考虑到十字架这么特殊的图案,以每个十字架的最高点为判断的起始点,也就是说,当能画一个十字架时,绝对是首先遇上它的最高点的!然后判断该点的正下方连续两点,还有下方第一个点紧挨着左右两边是否也为'#'即可。另外一个要考虑的地方是肯定不能画十字架的情况,每一列的第一个和最后一个字符如果为'#'是不能画十字架的,还有,倒数后两行出现'#'也是不行的。

         这次比赛的题目总的来说,很有意思,虽然食蛋了!大悲剧~~~

        

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 using namespace std;
     6 
     7 const int maxn = 100 + 10;
     8 char cell[maxn][maxn];
     9 
    10 int main()
    11 {
    12     int i, j, n, flag;
    13     while (scanf("%d", &n) != EOF)
    14     {
    15         for (i = 0; i < n; i++)
    16             scanf("%s", cell[i]);
    17         flag = 0;
    18         for (i = 0; i < n && !flag; i++)
    19         {
    20             for (j = 0; j < n && !flag; j++)
    21             {
    22                 if (cell[i][j] == '#')
    23                 {
    24                     if (j == 0 || j == n-1 || i >= n-2  || cell[i+1][j] != '#' || cell[i+1][j-1] != '#' || cell[i+1][j+1] != '#' || cell[i+2][j] != '#')  // 第1列,最后1列,倒数后两行,还有十字架所占的所有地方都要检测
    25                     {
    26                         printf("NO
    ");
    27                         flag = 1;
    28                     }
    29                     else   // 十字架所占的'#'注销掉,以避免阻碍判断下一个十字架
    30                     {
    31                          cell[i+1][j] = '.';
    32                          cell[i+1][j-1] = '.';
    33                          cell[i+1][j+1] = '.';
    34                          cell[i+2][j] = '.';
    35                     }
    36                 }
    37             }
    38         }
    39         if (!flag)
    40             printf("YES
    ");     
    41     }
    42     return 0;
    43 } 

        

        

  • 相关阅读:
    poj 3253 Fence Repair (优先队列,哈弗曼)
    容斥原理 (转载)
    poj 1088 滑雪 DP(dfs的记忆化搜索)
    饭卡 01背包 + 贪心
    N分之一 竖式除法模拟
    poj2325 大数除法+贪心
    优先队列重载运算符< 以及初始化列表
    POJ 2718 Smallest Difference(贪心 or next_permutation暴力枚举)
    HASH算法
    字符串匹配算法——KMP算法
  • 原文地址:https://www.cnblogs.com/windysai/p/3537823.html
Copyright © 2011-2022 走看看