题目大概:
输入一个矩形的长和宽,然后输入矩形状的由1和0构成的数,若这些数不全为1,并且这些数中的0不挨着0,就输出yes,否则输出no。当输入0 0时结束输入。
思路:
用二维数组储存数据,用两个数控制题目中的两个要求,满足则输出yes,反之no。
感想:
做这个题,思维要严谨,把可能的包含在内,不可能的也不能包含进去。
代码:
#include <iostream>
using namespace std;
int main()
{int n,m;
int a[10][10];
while(cin>>n>>m)
{if(n==0&&m==0)break;
for(int i=0;i<n;i++)
{for(int t=0;t<m;t++)
{cin>>a[i][t];
}
}
int k=0,l=0;
for(int i=0;i<n;i++)
{for(int t=0;t<m;t++)
{if(a[i][t]==0){
if(i-1>0)if(a[i-1][t]==0)k++;
if(i+1<n)if(a[i+1][t]==0)k++;
if(t-1>0)if(a[i][t-1]==0)k++;
if(t+1<m)if(a[i][t+1]==0)k++;
}
if(a[i][t]!=1)l++;
}
}
if(k)cout<<"No"<<endl;
if(!k)if(l)cout<<"Yes"<<endl;
if(!l)cout<<"No"<<endl;
}
return 0;
}
using namespace std;
int main()
{int n,m;
int a[10][10];
while(cin>>n>>m)
{if(n==0&&m==0)break;
for(int i=0;i<n;i++)
{for(int t=0;t<m;t++)
{cin>>a[i][t];
}
}
int k=0,l=0;
for(int i=0;i<n;i++)
{for(int t=0;t<m;t++)
{if(a[i][t]==0){
if(i-1>0)if(a[i-1][t]==0)k++;
if(i+1<n)if(a[i+1][t]==0)k++;
if(t-1>0)if(a[i][t-1]==0)k++;
if(t+1<m)if(a[i][t+1]==0)k++;
}
if(a[i][t]!=1)l++;
}
}
if(k)cout<<"No"<<endl;
if(!k)if(l)cout<<"Yes"<<endl;
if(!l)cout<<"No"<<endl;
}
return 0;
}