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;
    }



     

  • 相关阅读:
    Mac开发——设置关闭窗口之后点击Dock中的图标可以再次打开窗口
    添加学院的 Exchange邮箱到手持设备中
    黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
    解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题
    Lua中的正则表达式的使用
    C++11 标准新特性:Defaulted 和 Deleted 函数
    HTML5基础
    第一本书考试错题
    字符串
    带参数的方法
  • 原文地址:https://www.cnblogs.com/lidaojian/p/2428919.html
Copyright © 2011-2022 走看看