#include<bits/stdc++.h>
using namespace std;
int mp[50][50],mp0[50][50];//需要保护原矩阵,mp0是最后要输出的矩阵,
//不然再修改过程中原来可以消除的行可能因为消除了某个格子就没法消除了
int main(void)
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp[i][j];
mp0[i][j]=mp[i][j];//输出的矩阵初始化成和原矩阵一样
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int pre,rear;
for(rear=i;rear<=n&&mp[rear][j]==mp[i][j];rear++);
rear--;//横向最左边的坐标
for(pre=i;pre>=1&&mp[pre][j]==mp[i][j];pre--);
pre++;//横向最右边的坐标
if(rear-pre>=2)//横向有没有达到3个格子
{
for(int k=pre;k<=rear;k++)
{
mp0[k][j]=0;
}
}
for(rear=j;rear<=m&&mp[i][rear]==mp[i][j];rear++);
rear--;//纵向最上面的坐标
for(pre=j;pre>=1&&mp[i][pre]==mp[i][j];pre--);
pre++;//纵向最下面的坐标
if(rear-pre>=2)//纵向有没有达到三个格子
{
for(int k=pre;k<=rear;k++)
{
mp0[i][k]=0;
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(j==m)
{
cout<<mp0[i][j]<<endl;
}
else
{
cout<<mp0[i][j]<<" ";
}
}
}
return 0;
}
201512-2 消除类游戏
最新推荐文章于 2022-12-29 18:54:48 发布