20pts求调:(
查看原帖
20pts求调:(
1044721
Zxm2013楼主2025/2/2 15:57
#include<iostream>
using namespace std;
int n,m,ans;
int a[101][101];
bool b[101][101];
void dfs(int x,int y)
{
           if(!b[x][y]&&a[x][y]){
           	ans++;
           	b[x][y]=false;
           	if(b[x][y+1]&&b[x][y-1]&&b[x+1][y]&&b[x-1][y]){
	  if(a[x][y+1]==a[x][y]&&a[x][y-1]==a[x][y]&&a[x+1][y]==a[x][y]&&a[x-1][y]==a[x][y]){
	  	b[x][y+1]==false,b[x][y-1]==false,b[x+1][y]==false,b[x-1][y]==false;
			   }
		}
		   }
		   if(x!=n-1&&!b[x+1][y]&&a[x+1][y])
		   dfs(x+1,y);
		   if(y!=m-1&&!b[x][y+1]&&a[x][y+1])
		   dfs(x,y+1);
		   if(x==m-1&&y==m-1)return;
}
int main()
{
	cin>>n>>m;
	for(int i=0; i<n; i++)   {
		for(int j=0; j<m; j++)    {
			cin>>a[i][j];
			if(a[i][j]==0)b[i][j]=false;
								  }
							}
	dfs(0,0);
	cout<<ans;
	return 0;
}

rt,玄关:(

2025/2/2 15:57
加载中...