错了5个点,求助~

#include<cstdio>
#include<cstring>
using namespace std;
bool v[110][110],map[110][110];
int n,m,ans=0;char ss[110];
int dx[]={1,2,-1,-2,0,0,0,0,1,-1,1,-1};
int dy[]={0,0,0,0,1,2,-1,-2,1,1,-1,-1};
void dfs(int x,int y)
{
map[x][y]=true;
for(int i=0;i<12;i++)
{
if(map[x+dx[i]][y+dy[i]]==false&&v[x+dx[i]][y+dy[i]]==true)
{
dfs(x+dx[i],y+dy[i]);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
memset(v,false,sizeof(v));
memset(map,false,sizeof(map));
for(int i=1;i<=n;i++)
{
scanf("%s",ss);
for(int j=1;j<=m;j++)
{
if(ss[j]=='#')
{
v[i][j]=true;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(v[i][j]==true&&map[i][j]==false)
{
dfs(i,j);
ans++;
}
}
}
printf("%d\n",ans);
}
错了5个点,求助~

2 条评论

  • @ 2015-08-07 09:56:42

    刚才发错了,再发一次
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    using namespace std;
    char s[105][105];
    bool v[105][105];
    int m,n;
    int dx[12]={1,-1,2,-2,0,0,0,0,1,1,-1,-1};
    int dy[12]={0,0,0,0,1,-1,2,-2,1,-1,1,-1};
    void myscanf()
    {
    cin>>n>>m;
    int i,j;
    for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>s[i][j];
    return;
    }
    void find(int x,int y)
    {
    v[x][y]=true;
    int i,tx,ty;
    for(i=0;i<12;i++)
    {
    tx=x+dx[i];
    ty=y+dy[i];
    if(tx>=0 && tx<n && ty>=0 && ty<m &&! v[tx][ty] && s[tx][ty]=='#')
    find(tx,ty);
    }
    return;
    }
    int main()
    {
    myscanf();
    int i,j,ans=0;
    memset(v,false,sizeof(v));
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    if(s[i][j]=='#' && !v[i][j] )
    {
    find(i,j);
    ans++;
    }
    cout<<ans;
    return 0;
    }

  • @ 2015-08-07 09:56:18

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    using namespace std;
    char s[105][105];
    bool v[105][105];
    int m,n;
    int dx[12]={1,-1,2,-2,0,0,0,0,1,1,-1,-1};
    int dy[12]={0,0,0,0,1,-1,2,-2,1,-1,1,-1};
    void myscanf()
    {
    cin>>n>>m;
    int i,j;
    for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>s[i][j];
    return;
    }
    void find(int x,int y)
    {
    v[x][y]=true;
    int i,tx,ty;
    for(i=0;i<12;i++)
    {
    tx=x+dx[i];
    ty=y+dy[i];
    if(tx>=0 && tx<n && ty>=0 && ty<m &&! v[tx][ty] && s[tx][ty]=='#')
    find(tx,ty);
    }
    return;
    }
    int main()
    {
    myscanf();
    int i,j,ans=0;
    memset(v,false,sizeof(v));
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    if(s[i][j]=='#' && !v[i][j] )
    {
    find(i,j);
    ans++;
    }
    cout<<ans;
    return 0;
    }
    我错了七个,求助

  • 1

信息

ID
1051
难度
4
分类
搜索 | 搜索与剪枝 点击显示
标签
递交数
6196
已通过
2431
通过率
39%
被复制
13
上传者