- 送给圣诞夜的极光
- 2015-08-07 09:55:08 @
#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 条评论
-
zhuguanxu LV 9 @ 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