标签:操作 lob turn 数字 cout 情况 mamicode end 题意
题意:给一个\(n\)X\(m\)的矩阵,矩阵中某个数字\(k\)表示其四周恰好有\(k\)个不为0的数字,你可以使任意位置上的数字变大,如果操作后满足条件,输出新矩阵,否则输出NO.
题解:贪心,既然能使任意位置加大任意数值,那么我们可以将所有位置都给他填满,这样的话,只要是满足条件的情况就都能这样输出,所以我们遍历每个位置,然后判断周围能填多少个,如果某个数大于周围能填的个数,那么就不满足条件.
代码:
int t;
int n,m;
int a[400][400];
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int main() {
ios::sync_with_stdio(false);cin.tie(0);
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];
}
}
bool ok=1;
int cnt=0;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cnt=0;
for(int k=0;k<4;++k){
int x=i+dx[k];
int y=j+dy[k];
if(x>=1 && x<=n && y>=1 && y<=m) cnt++;
}
if(a[i][j]>cnt){
ok=0;
break;
}
else a[i][j]=cnt;
}
if(!ok){
break;
}
}
if(!ok){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
}
return 0;
}
Codeforces Global Round 9 B. Neighbor Grid (构造,贪心)
标签:操作 lob turn 数字 cout 情况 mamicode end 题意
原文地址:https://www.cnblogs.com/lr599909928/p/13260476.html