Tom's Meadow
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
- Not all squares are covered with grass.
- 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?
汤姆在他的花园里有一片草地。 他将它分成N * M个正方形。 最初所有的广场都被草覆盖着。 他在一些广场上修剪草地,并认为草地是美丽的,当且仅当
并非所有的广场都被草覆盖。
没有两个割草方格相邻。
如果两个方格共享一个边,则它们相邻。 问题来了:汤姆的草地现在变得漂亮了吗?
InputThe 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
输入包含多个测试用例!
每个测试用例都以包含由空格分隔的两个整数N,M(1 <= N,M <= 10)的行开始。 接下来是汤姆草地的描述。 每个N行由M个整数组成,每个行由一个空格分隔。 0(零)表示草地的相应位置被割草,1(1)表示广场被草地覆盖。
N = 0和M = 0的行表示输入的结束,不应该进行处理
OutputOne line for each test case.
Output "Yes" (without quotations) if the meadow is beautiful, otherwise "No"(without quotations).
每个测试用例一行。
如果草地很漂亮,输出“是”(不含引号),否则输出“否”(不含引号)。
Sample Input2 2
1 0
0 1
2 2
1 1
0 0
2 3
1 1 1
1 1 1
0 0
Yes
No
No
int n,m,i,j,c,k,d;
int a[15][15];
int fx[4]={0,0,-1,1};
int fy[4]={-1,1,0,0};
int fun(int x,int y)
{
int f=0;
for(k=0;k<4;k++)
{
int xx=x+fx[k];
int yy=y+fy[k];
if(xx>=0&&yy>=0&&xx<n&&yy<m&&a[xx][yy]==0)
{
f=1;break;
}
}
return f;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0))
{
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
d=0;c=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]==0)
{
c++;
d+=fun(i,j);
}
}
}
if(c==0)
printf("No\n");
else if(d>=1)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}