dfs部分re求调
查看原帖
dfs部分re求调
1233392
RY111楼主2024/8/14 15:22
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int maxn=150;
string s[15];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int st[maxn][maxn];
int cnt;
void dfs(int x,int y)
{
	for(int i=0;i<4;i++)
	{
		int a=x+dx[i];
		int b=y+dy[i];
	if(s[a][b]=='0')continue;//放到这全部re
		if(a<0||a>=n||b<0||b>=m)continue;
		if(st[a][b]==1)continue;
	//if(s[a][b]=='0')continue;放到这re6,7,8,10
		st[a][b]=1;
		dfs(a,b);
		
		
	}
}
int main()
{cin>>n>>m;
for(int i=0;i<n;i++)cin>>s[i];
for(int i=0;i<n;i++)
{
	for(int j=0;j<m;j++)
	{
		if(st[i][j]==0&&s[i][j]!='0')//混用字符0和数字0致错
		{
			dfs(i,j);
// 			cout<<cnt<<endl;
			cnt++;
		}
	}
}
	cout<<cnt<<endl;
	return 0;
	
}
2024/8/14 15:22
加载中...