哪个好心人帮我交一下
查看原帖
哪个好心人帮我交一下
623132
I_AK_IOI_2341楼主2023/7/18 16:32
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string z[110];
int n,m,cnt=0;
int v[110][110];
int dx[8]={1,0,-1,0,1,-1,1,-1};
int dy[8]={0,1,0,-1,1,-1,-1,1};
void dfs(int idx,int idy)
{
	for(int i=0;i<8;i++)
	{
		int x=idx+dx[i];
		int y=idy+dy[i];
		if(x<0||x>=n||y<0||y>=m||v[x][y]==1)
		{
			continue;
		 } 
		if(z[x][y]=='@'&&v[x][y]==0)
		{
			v[x][y]=1;
			dfs(x,y);
		}
	}
}
int main()
{
	cin>>n>>m;
	while(n!=0||m!=0)
	{
		memset(v, 0, sizeof(v));
		if(m==0)
		{
			break;
		}
		
		for(int i=0;i<n;i++)
		{
			cin>>z[i];			
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				if(z[i][j]=='@'&&v[i][j]==0)
				{
					v[i][j]=1;
					cnt++;
					dfs(i,j);
				}
			}
		} 
		cout<<cnt<<endl;
		cin>>n>>m;
		cnt=0;
	}
	
	return 0;
}

栓Q

2023/7/18 16:32
加载中...