题意
在一个01矩阵里,每一个点为起点,看能不能找到另一个点,是的两点简单路径形成的01串为回位串。
关键词
思维
题解
观察01串,若为0开头,二位回文串为00,若未遇到0,则三位为010,同理四位为0110,可以看到01串如果为回文串的话,只要在遇到一个0,即可结束,构成01回文串,同理,1开头的也是如此。
这样这个问题就可以传化成分别计0与1的个数,如果0的个数≥2,则所以0 都是YES,1同理。
#include<bits/stdc++.h>
using namespace std;
string arr[1000005];
int main(){
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n,m;
cin>>n>>m;
int num1=0,num0=0;
for(int j=1;j<=n;j++){
cin>>arr[j];
for(int k=0;k<m;k++){
if(arr[j][k]=='1') num1++;
else num0++;
}
}
for(int j=1;j<=n;j++){
for(int k=0;k<m;k++){
if(arr[j][k]=='1'){
if(num1>=2) cout<<"Y";
else cout<<"N";
}
else{
if(num0>=2) cout<<"Y";
else cout<<"N";
}
}
cout<<"\n";
}
}
}

京公网安备 11010502036488号