太原市建设厅网站首页,长沙短视频制作,大麦网网站内似网站开发,上海制作网站公司哪家好要做一株小草#xff0c;默默努力
求细胞数量 #includeiostream
using namespace std;
//对每个点进行搜索#xff0c;dfs/bfs#xff0c;将搜过的点标记出来#xff0c;然后记录次数
//搜索几次#xff0c;就有几个细胞
const int N110;
int g[N][N],st[N][N];
…要做一株小草默默努力
求细胞数量 #includeiostream
using namespace std;
//对每个点进行搜索dfs/bfs将搜过的点标记出来然后记录次数
//搜索几次就有几个细胞
const int N110;
int g[N][N],st[N][N];
int n,m;
int dx[4]{-1,0,1,0},dy[4]{0,1,0,-1};void dfs(int x,int y)
{if(g[x][y]0) return;for(int i0;i4;i){int axdx[i],bydy[i];if(st[a][b]0g[a][b]) {st[a][b]1;dfs(a,b);//st[a][b]0;}}
}int main()
{cinnm;for(int i1;in;i)for(int j1;jm;j) scanf(%1d,g[i][j]);int cnt0;for(int i1;in;i){for(int j1;jm;j)if(g[i][j]st[i][j]0) {dfs(i,j);cnt;}}printf(%d,cnt);return 0;
}1.我们不能在dfs进行递归的时候回复现场回复现场在回溯的时候进行的但是我们的算法的思想是每次递归下去将与他相接的不为0的空间标记为1所以根本不需要进行回溯 2.第二个槽点就是在数据读入的时候 4 10 0234500067 1034560500 2045600671 0000000089 这些数据是连在一起的如果直接读入的话会认为全部是一个数字也就是说0234500067会放到第一个空间中存起来就造成了错误所以我们需要进行重新的数据读入 方法一scanf(“%1d”,x); 方法二一字符串类型读入将读入的数据按位转化为数字存起来