关注
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<vector>
#include<queue>
using namespace std;
typedef long long LL;
struct node{
int c;
int tn;
int tm;
int num;
node(int a,int b,int dd,int d)
{
c = a;
tn = b;
tm = dd;
num = d;
}
node()
{
}
};
struct node2{
int tn;
int tm;
int c;
node2(int a,int b,int d)
{
tn = a;
tm = b;
c = d;
}
node2()
{
}
};
bool cmp(node a,node b)
{
if(a.num!=b.num)
{
return a.num>b.num;
}
else if(a.c!=b.c)
{
return a.c<b.c;
}
else if(a.tn!=b.tn)
{
return a.tn<b.tn;
}
else
{
return a.tm<b.tm;
}
}
int t,n,m,dx[]={0,1,-1,0},dy[]={1,0,0,-1};
string s[100];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
s[i][j]='#';
for(int i=0;i<n;i++)
cin>>s[i];
while(1)
{
vector<node>arr;
arr.clear();
int book[100][100] = {0};
for(int i=0;i<=50;i++)
for(int j=0;j<=50;j++)
book[i][j]=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(!book[i][j]&&s[i][j]!='#')
{
int tc = 1;
char c = s[i][j];
book[i][j] = 1;
queue<node2>q;
q.push(node2(i,j,s[i][j]));
while(!q.empty())
{
int sz = q.size();
for(int i=1;i<=sz;i++)
{
node2 temp = q.front();
q.pop();
int x = temp.tn;
int y = temp.tm;
for(int k = 0;k<4;k++)
{
int tempx = x+dx[k];
int tempy = y+dy[k];
if(tempx>=0&&tempx<n&&tempy>=0&&tempy<m&&!book[tempx][tempy]&&s[tempx][tempy]==c)
{
book[tempx][tempy] = 1;
tc++;
q.push(node2(tempx,tempy,c));
}
}
}
}
if(tc>1)
{
arr.push_back(node(s[i][j],i,j,tc));
}
}
}
if(arr.size()==0)
break;
else
{
int ss;
sort(arr.begin(),arr.end(),cmp);
int xx = arr[0].tn;
int yy = arr[0].tm;
int cc = arr[0].c;
queue<node2>q;
q.push(node2(xx,yy,cc));
while(!q.empty())
{
int sz = q.size();
for(int i=1;i<=sz;i++)
{
node2 temp = q.front();
q.pop();
int x = temp.tn;
int y = temp.tm;
int c = temp.c;
for(int k = 0;k<4;k++)
{
int tempx = x+dx[k];
int tempy = y+dy[k];
if(tempx>=0&&tempx<n&&tempy>=0&&tempy<m&&s[tempx][tempy]==cc)
{
s[tempx][tempy]='#';
q.push(node2(tempx,tempy,c));
}
}
}
}
for(int i=0;i<m;i++)
{
int k = 0;
for(int j=n-1;j>=0;j--)
{
if(s[j][i]=='#')
{
k++;
}
else
s[j+k][i]=s[j][i];
if(k!=0)
s[j][i]='#';
}
}
for(int i=0;i<m;i++)
{
int k=0;
for(int j=0;j<n;j++)
if(s[j][i]=='#')
k++;
if(k==n)
{
for(int j=0;j<n;j++)
s[j][i]=s[j][i+1],s[j][i+1]='#';
}
}
}
}
int shu = 0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(s[i][j]=='#')
shu++;
}
cout<<n*m-shu<<endl;
}
return 0;
} 第三题
查看原帖
点赞 1
相关推荐
今天 00:08
陕西理工大学 电子工程师 Fyhyuky:三年后肯定不会啊,只会比现在更烂,你自己看看现在有没有什么增长点,电车都是国家补贴兜底才发展出来的,已经比较违背市场自然规律了,互联网更不用说了,国家强力打压,传统制造业转型失败,现在苟延残喘中
点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
299152次浏览 2643人参与
# 如果不工作真的会快乐吗 #
58886次浏览 515人参与
# 阿里云管培生offer #
16840次浏览 294人参与
# 地方国企笔面经互助 #
3730次浏览 9人参与
# 美团求职进展汇总 #
1326730次浏览 12446人参与
# 选完offer后,你后悔学本专业吗 #
19662次浏览 143人参与
# 百度开奖 #
161336次浏览 969人参与
# 正在实习的你,几点下班 #
51630次浏览 385人参与
# 国央企薪资爆料 #
8033次浏览 67人参与
# 如何一边实习一边秋招 #
991901次浏览 12638人参与
# 提前批简历挂麻了怎么办 #
146363次浏览 1948人参与
# 学历or实习经历,哪个更重要 #
50864次浏览 401人参与
# 海康威视求职进展汇总 #
398676次浏览 3405人参与
# 米哈游求职进展汇总 #
175803次浏览 1458人参与
# 投递实习岗位前的准备 #
1178935次浏览 18391人参与
# 面试体验感最好的是哪家? #
85021次浏览 845人参与
# 实习生应该准时下班吗 #
167365次浏览 1159人参与
# 得物求职进展汇总 #
66162次浏览 682人参与
# 求职遇到的搞笑事件 #
70695次浏览 576人参与
# 网申一定要掌握的小技巧 #
5309次浏览 53人参与
# 0offer是寒冬太冷还是我太菜 #
897899次浏览 8008人参与
# 腾讯求职进展汇总 #
195708次浏览 1641人参与