3377:【例65.3】 细胞个数
[例65.3] 细胞个数
#include<bits/stdc++.h>
using namespace std;
int g[105][105];
int n,m,sum=0;
bool used[105][105];//标记数组
int dx[]={0,0,1,-1};//方向数组
int dy[]={1,-1,0,0};
//判断边界或是否被标记过
bool check(int a,int b)
{
if(a<1||a>n||b<1||b>m||g[a][b]==0||used[a][b]==false)
return false;
else
return true;
}
//深搜
void dfs(int a,int b)
{
used[a][b]=false;
for(int i=0;i<4;i++)
{
int tx,ty;
tx=a+dx[i];ty=b+dy[i];
if(!check(tx,ty))
continue;
dfs(tx,ty);
used[tx][ty]=false;
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%1d",&g[i][j]);//有两种输入方法,当用char定义g[i][j]时,用cin>>g[i][j];用int定义g[i][j]时,用scanf("%1d",&g[i][j]);来控制输入的个数
used[i][j]=true;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(g[i][j]!=0&&used[i][j])
{
dfs(i,j);
sum++;
}
}
cout<<sum<<endl;
return 0;
}
C++画图之Go C编程 第1-9课(共53题)
《走近Go C的编程世界》第1课 --- 第25课
OpenJudge NOI题库 116题
OpenJudge NOI题库 入门 116题 (一)
OpenJudge NOI题库 入门 116题 (二)
OpenJudge NOI题库 入门 116题 (三)
小学生C++编程基础(一)--- 123题
小学生C++趣味编程 每日一练
信息学奥赛 算法基础 课堂练习与课后作业
PAT乙级(Basic Level)真题