lyh不会打代码 2022-01-16 12:12 采纳率: 70%
浏览 15
已结题

下面代码哪里错误?请指示

题目描述
农夫John的农场里有很多小山丘,他想要在那里布置一些保镖去保卫他的那些相当值钱的奶牛们。
他想知道如果在一座小山丘上布置一名保镖的话,他总共需要招聘多少名保镖。他现在有一个用数字矩阵来表示地形的地图。这个矩阵有N行(1 < N < = 100)和M列( 1 < M < = 70) 。矩阵中的每个元素都有一个值H_ij(0 < = H_ij < =10,000)来表示该地区的海拔高度。
小山丘的定义是:若地图中一个元素所邻接的所有元素都比这个元素高度要小或等于(或它邻接的是地图的边界),则该元素和其周围所有按照这样顺序排列的元素的集合称为一个小山丘(本题某个非边界点跟它相邻的有8个点:上、下、左、右、左上、右上、左下、右下)。

输入
第1行:两个由空格隔开的整数N和M;
第2行到第N+1行:
第I+l行描述了地图上的第I行,有M个由空格隔开的整数:H_ij。

输出
一个整数,表示小山丘的个数。

样例输入
8 7
4 3 2 2 1 0 1
3 3 3 2 1 0 1
2 2 2 2 1 0 0
2 1 1 1 1 0 0
1 1 0 0 0 1 0
0 0 0 1 1 1 0
0 1 2 2 1 1 0
0 1 1 1 2 1 0

样例输出
3

我的代码:


```c++
#include<iostream>
using namespace std;
bool flag=1;
int n,m,s,a[105][105],book[105][105],fx[10]={0,-1,-1,-1,0,0,1,1,1},fy[10]={-1,0,1,-1,1,-1,0,1};
void dfs(int x,int y)
{
    for(int i=1;i<=8;i++)
    {
        int nx=x+fx[i],ny=y+fy[i];
        if(nx>=1&&nx<=n&&ny>=1&&ny<=m)
        {
            if(a[nx][ny]<=a[x][y]&&book[nx][ny]==0)
            {
                book[nx][ny]=1;
                dfs(nx,ny);
            }
        }
    }
}
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++)
        {
            if(book[i][j]==0)
            {
                book[i][j]=1;
                flag=1;
                dfs(i,j);
                if(flag==1)
                {
                    s++;
                }
            }
        }
    }
    cout<<s;
}


不知如何修改。盼详细讲解,谢谢!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月24日
    • 创建了问题 1月16日

    悬赏问题

    • ¥200 csgo2的viewmatrix值是否还有别的获取方式
    • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
    • ¥15 请把下列每一行代码完整地读懂并注释出来
    • ¥15 pycharm运行main文件,显示没有conda环境
    • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
    • ¥15 为什么eclipse不能再下载了?
    • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
    • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
    • ¥15 特定网页无法访问,已排除网页问题
    • ¥50 如何将脑的图像投影到颅骨上