算法学习

今天复习巩固了深搜和广度搜索,做了几个练习题,其中求细胞数量注意审题,即让我们求连通块的个数。

#include<bits/stdc++.h>
using namespace std;
int x,y;
char m[105][105];
int sx[4]={-1,0,1,0};//左 上 右 下
int sy[4]={0,-1,0,1};

void bfs(int a,int b)
{
m[a][b] = '0';
for(int i=0;i<4;i++)
{
int dx = a+sx[i];
int dy = b+sy[i];
if(m[dx][dy]!='0'&&dx>=0&&dy>=0&&dx<x&&dy<y)
{
bfs(dx,dy);
}
a = dx - sx[i];
b = dy - sy[i];
}
}
int main()
{
cin>>x>>y;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
cin>>m[i][j];
}
}
int count=0;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(m[i][j] == '0')
{
continue;
}
bfs(i,j);
count++;
}
}
cout<<count;
return 0;
}

posted @   橘子味芬达水  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2023-03-10 每日总结2023/3/10
点击右上角即可分享
微信分享提示