UOJ Logo insilent的博客

博客

#72. 细胞

2018-02-23 12:09:26 By insilent
#include<bits/stdc++.h>
using namespace std;
int ans,a[1000][1000],m,n;
bool mark[1000][1000];
void dfs(int x,int y,int lolo)
{
    if(x>m||y>n||mark[x][y]==1)
        return;
    mark[x][y]=1;
    if(a[x][y]==0)
        return;
    if(lolo==0&&a[x][y]!=0)
    {
        ans++;
        lolo=1;
    }
    dfs(x+1,y,lolo);
    dfs(x,y+1,lolo);
    dfs(x-1,y,lolo);
    dfs(x,y-1,lolo);
}
int main()
{
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            scanf("%1d",&a[i][j]);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            dfs(i,j,0);
    cout<<ans<<endl;
    return 0;
}

评论

King_Nengneng
沙发【前排支持】
hww1055292303
six
gdlz4890
深搜 #include<iostream> using namespace std; int m, n, ans=0; char p[110][110]; int px[4]={1, 0, -1, 0}, py[4]={0, 1, 0, -1}; void sear(int x, int y){ for(int i=0; i<4; i++){ int newx=x+px[i], newy=y+py[i]; if(p[newx][newy]>='1' && p[newx][newy]<='9'){ p[newx][newy]='0'; sear(newx, newy); } } } int main(){ cin>>m>>n; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) cin>>p[i][j]; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) if(p[i][j]!='0'){ ans++; sear(i, j); } cout<<ans; return 0; } //++

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。