一只P1596的10分代码求调(橙)(DFS))
  • 板块学术版
  • 楼主ltm_soviet
  • 当前回复2
  • 已保存回复5
  • 发布时间2025/6/17 22:26
  • 上次更新2025/6/18 22:26:35
查看原帖
一只P1596的10分代码求调(橙)(DFS))
1383031
ltm_soviet楼主2025/6/17 22:26

主诉:

  • 不知如何调
  • 样例输出为8

诉求:

  • 在源代码上改是最好啦!

  • 回复请@楼主

code:

#include<bits/stdc++.h>
using namespace std;
// #define int long long
#define scnaf scanf
#define itn int
int n,m;
itn ans;
bool x[105][105];
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,1,1,1,0,-1,-1,-1};
char ch;
bool check(int xx,int yy)
{
    if(xx<1 || xx>n || yy<1 || yy>m || !x[xx][yy])
        return 0;
    else
        return 1;
}
void dfs(itn xx,int yy)
{
    for(int i=0;i<8;i++)
    {
        x[xx][yy]=0;
        int dxx=xx+dx[i],dyy=yy+dy[i];
        if(check(dxx,dyy))
            dfs(dxx,dyy);
    }
    return ;
}
signed main()
{
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            ch=getchar();
            if(ch=='W')
                x[i][j]=1;
            else if(ch=='.')
                x[i][j]=0;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(x[i][j])
            {
                dfs(i,j);
                ans++;
            }
        }
    }
    printf("%d",ans);

    return 0;
}
2025/6/17 22:26
加载中...