201912DLOI初中 第二题 风景点

题目描述

给出 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值