全MLE求助
查看原帖
全MLE求助
1356725
phi_gros楼主2025/2/4 11:20
#include<bits/stdc++.h>
using namespace std;

char a[105][15];
int n,k,x,y,sz[1050],vis[105][15],tot;
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};

void dfs(int x,int y){
    vis[x][y] = tot;
    sz[tot] ++;
    for(int i = 0;i <= 3;i ++){
        int xx = x + dx[i];
        int yy = y + dy[i];
        if(vis[xx][yy] == 0 && a[x][y] == a[xx][yy])
        dfs(xx,yy);
    }
}

int main(){
    cin >> n >> k;
    for(int i = 1;i <= n;i ++){
        for(int j = 1;j <= 10;j ++){
            cin >> a[i][j];
        }
    }
    while(1){
        memset(vis,0,sizeof(vis));
        memset(sz,0,sizeof(sz));
        tot = 0;
        for(int i = 1;i <= n;i ++){
            for(int j = 1;j <= 10;j ++){
                if(a[i][j] && vis[x][y] == 0){
                x = i,y = j;
                dfs(x,y);
                tot ++;
                }
            }
        }
        bool flag = true;
        for(int i = 1;i <= n;i ++){
            for(int j = 1;j <= 10;j ++){
                if(sz[vis[i][j]] >= k){
                x = i,y = j;
                a[x][y] = '0';
                flag = false;
                }
            if(flag)break;
                for(int j = 1;j <= 10;j ++){
                    int m = n;
                    for(int i = n;i >= 1;i --){
                        if(a[i][j] != 0)swap(a[i][j],a[m --][j]);
                    }
                }
            }
        }
    }
    for(int i = 1;i <= n;i ++){
            for(int j = 1;j <= 10;j ++){
                cout << a[i][j];
            }
            cout << endl;
    }
    return 0;
}
2025/2/4 11:20
加载中...