本题是2026牛客寒假算法基础集训营2的I题

题目链接:https://ac.nowcoder.com/acm/contest/120562/I

题目大意:给定一个n X m的矩阵,里面的每一个数是由0/1组成的,让我们判断每一个格子是否能让我们以它为终点,然后从不同与这个点的另一点出发,使得我们路径上的数字组成是一个回文数。

题目分析:只要1的数字大于1,那么总能找到离得最近的两个1,使其作为头和尾,同时中间部分全是0,所以这种情况必定是回文数。同理0作为头和尾也是一样。

所以直接看代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
void solve(){
	ll n,m;cin>>n>>m;
	ll a=0,b=0;
	vector<vector<char>> v(n,vector<char>(m));
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			char ch;cin>>ch;
			if(ch=='1') a++;
			else b++;
			v[i][j]=ch;
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(v[i][j]=='1'){
				if(a>1) cout<<"Y";
				else cout<<"N";
			}
			else{
				if(b>1) cout<<"Y";
				else cout<<"N";
			}
		}
		cout<<"\n";
	}
}
	

int main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int T=1;
	cin>>T;
	while(T--){
		solve();
	}
}


注意这题卡endl