zoj 2850 Beautiful Meadow(水~)

 这道题真水,自己没看清题意,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; }

你可能感兴趣的:(System)