题目描述
解题思路
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a[n][m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
}
//消除算法
for(int i=0;i<n;i++)
{
for(int j=0;j<m-2;j++)
{
if(abs(a[i][j])==abs(a[i][j+1])&&abs(a[i][j+1])==abs(a[i][j+2]))
{
if(a[i][j]>0)
a[i][j]*=-1;
if(a[i][j+1]>0)
a[i][j+1]*=-1;
if(a[i][j+2]>0)
a[i][j+2]*=-1;
}
}
}
for(int j=0;j<m;j++)
{
for(int i=0;i<n-2;i++)
{
if(abs(a[i][j])==abs(a[i+1][j])&&abs(a[i+1][j])==abs(a[i+2][j])) //最小连续为3
{
if(a[i][j]>0)
a[i][j]*=-1;
if(a[i+1][j]>0)
a[i+1][j]*=-1;
if(a[i+2][j]>0)
a[i+2][j]*=-1;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]<0)
a[i][j]=0;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(j!=0)
cout<<' ';
cout<<a[i][j];
}
cout<<endl;
}
return 0;
}