MLE求助
查看原帖
MLE求助
593841
puzhi楼主2023/12/15 13:14
#include<bits/stdc++.h>
using namespace std;
const int maxn=110;
int n,k,m,fl[101][11],dis[10001],dt;
char a[101][11];
int wy[4][2]={0,1,1,0,-1,0,0,-1};
int dfs(int x,int y,int bz)
{
	int sum=1;
	for(int i=0;i<=3;i++)
	{
		int nx=x+wy[i][0],ny=y+wy[i][1];
		if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&fl[nx][ny]==0&&a[nx][ny]==a[x][y])
		{
			fl[nx][ny]=bz;
			sum+=dfs(nx,ny,bz);
		}
	}
	return sum;
}
int main()
{
	cin>>n>>k;
	m=10;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		//	a[i][j]=x[i][j]-'0';
		}
	while(1)
	{
		int fl2=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)fl[i][j]=0;
			dis[i]=0;
		}
		dt=0;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				if(fl[i][j]==0&&a[i][j]!='0')
				{
					fl[i][j]=dt+1;
					dis[++dt]=dfs(i,j,dt);
				}
		for(int i=1;i<=dt;i++)
			if(dis[i]>=k)
			{
				fl2=1;
				for(int j=1;j<=n;j++)
					for(int k=1;k<=m;k++)
						if(fl[j][k]==i)a[j][k]='0';
			}
		for(int i=n;i>=1;i--)
			for(int j=1;j<=m;j++)
			{
				if(a[i][j]=='0')continue;
				for(int g=n;g>=i+1;g--)
					if(a[g][j]=='0')
					{
						a[g][j]=a[i][j];
						a[i][j]='0';
						break;
					}
			}	
		if(fl2==0)break;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<a[i][j];
		}
		cout<<"\n";
	}
	return 0;
}
2023/12/15 13:14
加载中...