题解:CF1986B Matrix Stabilization
思路
模拟,我们按照题目所说,从
操作:如果当前的数减
Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[105][105];
void check(int x,int y)
{
int A,B,C,D;
A=B=C=D=0;
if(x-1>=1)A=a[x-1][y];
if(x+1<=n)B=a[x+1][y];
if(y-1>=1)C=a[x][y-1];
if(y+1<=m)D=a[x][y+1];
int s=a[x][y];
if(s<A||s<B||s<C||s<D)return;
a[x][y]=max(A,max(B,max(C,D)));
return ;
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T;
cin>>T;
while(T--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
check(i,j);
for(int i=1;i<=n;i++,cout<<"\n")
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
}
return 0;
}