dfs50分,五号数据点差一个,求助
查看原帖
dfs50分,五号数据点差一个,求助
365402
C02fe楼主2021/10/22 23:43
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,sum,fl;
char d[105][105];
int xw[8]={1,-1,0,0},yw[8]={0,0,-1,1};
int dfs(int x,int y,int su)
{
	if(su>=2&&fl==0)
	{
		sum++;
		fl=1;
	}
	d[x][y]='0';
	int ax,ay;
	for(int i=0;i<8;i++)
	{
		ax=x+xw[i];ay=y+yw[i];
		if(d[ax][ay]>='1'&&d[ax][ay]<='9'&&ax>=0&&ax<n&&ay>=0&&ay<m&&d[ax][ay]!='0')
		{
			dfs(ax,ay,su+1);
		}
	}
	return 0;
}
int main()
{
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
    	for(int x=0;x<m;x++)
    	{
    		cin>>d[i][x];
		}
	}
	for(int i=0;i<n;i++)
    {
    	for(int x=0;x<m;x++)
    	{
    		if(d[i][x]>='1'&&d[i][x]<='9')
    		{
    			fl=0;
    			dfs(i,x,1);
			}
		}
	}
	cout<<sum;
    return 0;
}
2021/10/22 23:43
加载中...