zoukankan      html  css  js  c++  java
  • ZOJ 2850 Beautiful Meadow (简单题)

    Beautiful Meadow


    Time Limit: 2 Seconds Memory Limit: 65536 KB


     

                                                                           

    Tom has a meadow in his garden. He divides it into N * M squares. Initially all the squares were covered with grass. He mowed down the grass on some of the squares and thinks the meadow is beautiful if and only if

    1. Not all squares are covered with grass.
    2. No two mowed squares are adjacent.

    Two squares are adjacent if they share an edge. Here comes the problem: Is Tom's meadow beautiful now?

    Input

    The input contains multiple test cases!

    Each test case starts with a line containing two integers N, M (1 <= N, M <= 10) separated by a space. There follows the description of Tom's Meadow. There're N lines each consisting of M integers separated by a space. 0(zero) means the corresponding position of the meadow is mowed and 1(one) means the square is covered by grass.

    A line with N = 0 and M = 0 signals the end of the input, which should not be processed

    Output

    One line for each test case.

    Output "Yes" (without quotations) if the meadow is beautiful, otherwise "No"(without quotations).

    Sample Input

    2 2
    1 0
    0 1
    2 2
    1 1
    0 0
    2 3
    1 1 1
    1 1 1
    0 0

    Sample Output

    Yes
    No
    No


    Author: CAO, Peng
    Source: Zhejiang Provincial Programming Contest 2007

    解题报告:这是昨天我们学校省赛选拔赛的题(题目是浙江第四次省赛)当时我看的这个题,但是题意看错了,哎!大一的都一次AC,而我交了四次,题意:就是起初全部是草覆盖,经过除草之后看是否是Beautiful Meadow,1、不能全部为草,2、相邻的不能全为空地。

    代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int MAX = 12;
    int map[MAX][MAX];
    int main()
    {
    int i, j, n, m, flag1, flag2;
    while (scanf("%d%d", &n, &m) != EOF)
    {
    if (n == 0 || m == 0)
    {
    break;
    }
    for (i = 0; i < MAX; ++i)//初始化
    {
    for (j = 0; j < MAX; ++j)
    {
    map[i][j] = 1;
    }
    }
    flag1 = 0;//假设全部是草
    flag2 = 1;//假设能满足没有两块空地相邻
    for (i = 1; i <= n; ++i)
    {
    for (j = 1; j <= m; ++j)
    {
    scanf("%d", &map[i][j]);
    if (map[i][j] == 0)
    {
    flag1 = 1;//这样保证了不全部为草
    }
    }
    }
    for (i = 1; i <= n && flag2; ++i)
    {
    for (j = 1; j <= m && flag2; ++j)
    {
    if ((map[i - 1][j] == 0 || map[i + 1][j] == 0 || map[i][j + 1] == 0 || map[i][j - 1] == 0) && map[i][j] == 0)
    {
    flag2 = 0;//这样说明有两块空地相邻,不是Beautiful Meadow

    }
    }
    }
    if (flag1 && flag2)
    {
    printf("Yes\n");
    }
    else
    {
    printf("No\n");
    }
    }
    return 0;
    }



     

  • 相关阅读:
    命令行打开无线网络设置
    WebView2 的使用记录
    QT-Mac:在Mac下实现QT程序的打包及公证
    QT:CEF实现js函数与C++函数的异步调用
    QT-Mac:QT Creator 中QT Versions显示无效的QT版本的解决办法
    QT-Mac: Undefined symbols for architecture x86_64
    全局键盘钩子失效与WebRTC的关系分析
    第十二届蓝桥杯决赛 大学 B 组 C/C++ 做题记录
    Luogu P2671 求和 | 数学奇偶性&前缀和
    2021铁三决赛 PWN cardstore | 格式化字符串 & ret2libc
  • 原文地址:https://www.cnblogs.com/lidaojian/p/2428919.html
Copyright © 2011-2022 走看看