您的位置:首页 > 其它

zoj 2850 Beautiful Meadow(水~)

2010-08-02 18:57 369 查看
这道题真水,自己没看清题意,WA。。。



给你一个二维数组,0代表割草,1代表有草,两个割草的地方不能挨着,不能每块都有草。



最简单的方法,用某个点去加相邻的点,如果结果为0,那么肯定这俩点都为0,不满足。(可以把周围的点全赋值为1,这样不用判断是否越界)



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    int n,m,i,j,flag;
    int map[12][12];
    while( scanf("%d%d",&n,&m) && n && m ) 
    {
        for(i=0; i<=n+1; i++ )
            for(j=0; j<=m+1; j++)
                map[i][j] = 1;
        flag = 0;
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++)
            {
                scanf("%d",&map[i][j]);
                if( map[i][j] == 0 )
                    flag = 1;
            }
        for(i=1; i<=n&&flag; i++)
            for(j=1; j<=m&&flag; j++)
            {
                if( map[i][j] + map[i][j+1] == 0 )
                    flag = 0;
                if( map[i][j] + map[i][j-1] == 0 )
                    flag = 0;
                if( map[i][j] + map[i+1][j] == 0 )
                    flag = 0;
                if( map[i][j] + map[i-1][j] == 0 )
                    flag = 0;
            }
        if( flag == 0 )
            printf("No/n");
        else
            printf("Yes/n");
        }
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: