列表

详情


NC214850. 对称之美

描述

给出n个字符串,从第1个字符串一直到第n个字符串每个串取一个字母来构成一个新字符串,新字符串的第i个字母只能从第i行的字符串中选出,这样就得到了一个新的长度为n的字符串,请问这个字符串是否有可能为回文字符串?

输入描述

第一行一个数字 ,代表测试数据的组数

每组测试数据先给出一个数字 n,然后接下来n行每行一个只由小写字母组成的字符串 s_i


输出描述

在一行中输出 “Yes” or “No”

示例1

输入:

2
1
a
3
a
b
c

输出:

Yes
No

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3(pypy3.6.1) 解法, 执行用时: 78ms, 内存消耗: 22384K, 提交时间: 2021-01-10 21:16:14

t=int(input())
sn=[]
for i in range (0,t):
    n = int(input())
    for j in range(0,n):
        s=input()
        sn.append(s)
    for j in range(0,n//2):
        b=0
        for k in range(0,len(sn[j])):
            if sn[j][k] in sn[n-1-j]:
                b=1
                break
        if b==0:
            print('No')
            break
        if j==n//2-1 and b==1:
            print('Yes')
    sn.clear()

C++(clang++11) 解法, 执行用时: 9ms, 内存消耗: 708K, 提交时间: 2021-01-22 20:19:12

#include<bits/stdc++.h>
using namespace std;
string s[10000];
int main()
{
	int  t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i=0;i<n;i++)
		cin>>s[i];
		bool flag=true;
		for(int i=0;i<n/2;i++)
		{
			bool f=false;
			for(auto x:s[i])
			if(s[n-i-1].find(x)!=string::npos)
			{
				f=true;
				break;
			}
			if(!f)
			flag=false;
		}
		if(!flag)
		puts("No");
		else
		puts("Yes");
	}
}

Python3(3.9) 解法, 执行用时: 39ms, 内存消耗: 2944K, 提交时间: 2021-01-13 02:38:53

T = int(input())
for _ in range(T):
    l = []
    n = int(input())
    for __ in range(n):
        l.append(set(input().strip()))
    flag = 1
    for __ in range(n):
        if not (l[__]&l[n-__-1]):flag = 0
    if flag:print('Yes')
    else:print('No')

上一题