社区讨论

我打了注释,希望大家能看一看我错在什么地方

P1451求细胞数量参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi6lnmee
此快照首次捕获于
2025/11/20 06:54
4 个月前
此快照最后确认于
2025/11/20 06:54
4 个月前
查看原帖
CPP
#include<iostream>
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int x,y,n,m,p[105][105],tail,head,num;
char f[105][105];
void search(int xx,int yy)
{
    p[1][1]=xx;p[1][2]=yy;              //该点入队 
    tail=head=1;                        //初始化指针 
    while(tail<=head)                      //直到没有点可以搜索 
      {
          for(int i=0;i<=3;i++)                //从4个方向搜索细胞 
            {
                x=p[tail][1]+dx[i];y=p[tail][2]+dy[i];  //确定搜索目标点 
                 if(f[x][y]!='0')                       //如果是细胞的一部分的话 
                  if(x>=1&&y>=1&&x<=n&&y<=m)            //如果不越界的话 
                    {
                        p[++head][1]=x;                   //队首加1,入队 
                  p[head][2]=y;             // 
                        f[x][y]='0';              //将该点置为‘0’ 
                    }
            }
          tail++;                             //队尾加一,进行下一个搜索 
      }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
        cin>>f[i][j];    
    for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
        if(f[i][j]!='0')
          {
              num++;
            f[i][j]='0';
              search(i,j);
          }
    cout<<num;
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...