若起点为1,要形成回文,则必须终点也为1,两个1之间0的个数任意。
同理,若起点为0,要形成回文,则终点也必须为0,中间1的个数任意。
所以本题的关键在于起点数字的个数是否>=2以构成首与尾。
下面是代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int T;
cin>>T;
while(T--){
int n,m,one=0,zero=0;
cin>>n>>m;
vector<string>a(n);
for(int i=0;i<n;i++){
cin>>a[i];
for(int j=0;j<=m;j++){
if(a[i][j]=='1')one++;
else if(a[i][j]=='0')zero++;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='1'){
if(one>=2)cout<<"Y";
else cout<<"N";
}
else if(a[i][j]=='0'){
if(zero>=2)cout<<"Y";
else cout<<"N";
}
}
cout<<'\n';
}
}
}

京公网安备 11010502036488号