CF1722A Spell Check 题解

题目

链接

https://www.luogu.com.cn/problem/CF1722A

字面描述

题面翻译

题目描述:

输入一个字符串,请判断这个字符串是不是字符串 Timur 的一种排列。

例如:TimurmiurTTrumimriTu 都是正确的排列。

注意:正确的排列必须包含大写的T和小写的其他字母。


输入格式:

输入的第一行一个整数 t t t ,表示有 t t t 组数据。

对于每组数据,第一行一个整数 n n n,表示输入的名字排列的长度。

第二行一个字符串,表示需要判断的排列。


输出格式:

对于每组数据,如果当前排列事是正确的,则输出 YES,否则输出 NO


数据范围和约定

$ 1 \le t \le 10^3 $ , 1 ≤ n ≤ 10 1 \le n \le 10 1n10

Translate By @Andy_L

题目描述

Timur likes his name. As a spelling of his name, he allows any permutation of the letters of the name. For example, the following strings are valid spellings of his name: Timur, miurT, Trumi, mriTu. Note that the correct spelling must have uppercased T and lowercased other letters.

Today he wrote string $ s $ of length $ n $ consisting only of uppercase or lowercase Latin letters. He asks you to check if $ s $ is the correct spelling of his name.

输入格式

The first line of the input contains an integer $ t $ ( $ 1 \leq t \leq 10^3 $ ) — the number of test cases.

The first line of each test case contains an integer $ n $ $ (1 \leq n \leq 10) $ — the length of string $ s $ .

The second line of each test case contains a string $ s $ consisting of only uppercase or lowercase Latin characters.

输出格式

For each test case, output “YES” (without quotes) if $ s $ satisfies the condition, and “NO” (without quotes) otherwise.

You can output the answer in any case (for example, the strings “yEs”, “yes”, “Yes” and “YES” will be recognized as a positive answer).

样例 #1

样例输入 #1
10
5
Timur
5
miurT
5
Trumi
5
mriTu
5
timur
4
Timr
6
Timuur
10
codeforces
10
TimurTimur
5
TIMUR
样例输出 #1
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO

代码实现

水题一道

#include<bits/stdc++.h>
using namespace std;

const int maxn=50;
int t,n;
string s;
int a[maxn]; 
inline void init(){
	a[1]=9;
	a[2]=13;
	a[3]=18;
	a[4]=20;
	a[5]=21;
}
int main(){
	cin>>t;
	while(t--){
		cin>>n>>s;
		init();
		if(n!=5){
			printf("NO\n");
			continue;
		}
		bool flag=false;
		do{
			for(int i=0;i<5;i++){
				char x;
				if(a[i+1]==20)x='T';
				else x=a[i+1]+96;
				//printf("x = %c\n",x);
				if(x!=s[i])break;
				if(i==4){
					flag=true;
					break;
				}
			}
			if(flag)break;
		}
		while(next_permutation(a+1,a+5+1));
		if(flag)printf("YES\n");
		else printf("NO\n");
	}
	return 0;
} 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

materialistOier

我只是一名ssfoier

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值