飞越的心


私信TA

用户名:H2030819089

访问量:18982

签 名:

等  级
排  名 77
经  验 9777
参赛次数 18
文章发表 38
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

1.分析题目


屏幕截图 2022-05-29 105330.png


题目错误

             矩形阵列应该是由数字0到9组成,

              数字1到9代表细胞,

             有4个细胞。


4 10
0234500067
1034560500
2045600671
0000000089


细胞数字是1到9
一个颜色代表同一个细胞,有四种细胞。

2.方法

dfs




注意事项:

输入时输入四行10列,不要输入int型

应该先输入char型再转换为int,不然会出错误,因为没有空格

参考代码:

#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int dx[4]={1,-1,0,0};//定义四个方向 
int dy[4]={0,0,-1,1};
int n,m;
int coun=0;     //计数 
void dfs(int x,int y)
{
    for(int i=0;i<4;i++)//遍历四个方向 
    {
        int Lx=x+dx[i],Ly=y+dy[i];
        if(Lx>0&&Lx<=n&&Ly>0&&Ly<=m&&a[Lx][Ly])//如果在矩形中,并没有遍历过 
        {
            a[Lx][Ly]=0;//将这个点变成遍历过了 ,以免下一次还遍历这个点。 
            dfs(Lx,Ly); //遍历 
        }
    }
} 
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            char c;
            cin>>c;//输入一个个字符 
            a[i][j]=c-'0';//转换为int型 
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(a[i][j])//如果这个点非0,才进入遍历 
            {
                a[i][j]=0; 
                coun++;
                dfs(i,j);
            }
        }
    }
    cout<<coun;
    return 0;
}


 

0.0分

48 人评分

  评论区

  • «
  • »