题目描述
给出 N 行 M 列的二维格子, 每个格子要么是‘#’ ,要么是‘.’ 。 一个格子是“风景点” ,
如果它同时满足如下两个条件:
1、 该格子是‘.’
2、 该格子的上、 下、 左、 右, 4 个方向全部都是‘.’ 。
你的任务是总共有多少个“风景点” 。
(4个方向,不是指相邻的4个点)
输入
第一行,N 和 M。 1<=N,M<=50。
接下来是 N 行 M 列的二维格子。
输出
一个整数。
提示
程序
#include<bits/stdc++.h>
using namespace std;
int n,m,c=0,f;
char a[55][55];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f=0;
if(a[i][j]=='.')
{
for(int k=1;k<=m;k++)
{
if(a[i][k]!='.')
{
f=1;
break;
}
}
for(int h=1;h<=n;h++)
{
if(a[h][j]!='.')
{
f=1;
break;
}
}
if(f==0)
{
c++;
}
}
}
}
cout<<c<<endl;
return 0;
}
小知识
.定义方式
二维数组就是在一维数组上多加一个维度。
建议:以下三种定义方式,利用第二种更加直观,提高代码可读性
1.1 逐个定义
#include <iostream>
using namespace std;