信奥题解:字符排序

来源:2024年12月GESP C++四级编程第二题。本文分析官方的标准答案,并给出了现代C++的参考代码。最后详细的介绍了 std::accumulate() 的用法。

试题名称:字符排序

时间限制:1.0 s
内存限制:512.0 MB

题面描述
⼩杨有 n n n 个仅包含⼩写字母的字符串 s 1 , s 2 , … , s n s_1,s_2,\ldots,s_n s1,s2,,sn ,⼩杨想将这些字符串按⼀定顺序排列后拼接到⼀起构成字符串 t t t 。⼩杨希望最后构成的字符串 t t t 满⾜:

  • 假设 t i t_i ti 为字符串 t t t 的第 i i i 个字符,对于所有的 j < i j<i j<i 均有 t j ≤ t i t_j\leq t_i tjti 。两个字符的⼤⼩关系与其在字母表中的顺序⼀致,例如 e < g < p < s e<g<p<s e<g<p<s

⼩杨想知道是否存在满⾜条件的字符串排列顺序。

输入格式
第⼀⾏包含⼀个正整数 ,代表测试数据组数。
对于每组测试数据,第⼀⾏包含⼀个正整数 n n n,含义如题⾯所⽰。
之后 n n n ⾏,每⾏包含⼀个字符串 s i s_i si
输出格式
对于每组测试数据,如果存在满⾜条件的排列顺序,输出 1,否则输出 0。
输入样例

3
3
aa
ac
de
2
aac
bc
1
gesp

输出样例

1
0
0

样例解释
对于第⼀组测试数据,⼀种可⾏的排列顺序为 aa+ac+de,构成的字符串 t t t 为 aaacde,满⾜条件。
对于全部数据,保证有 1 ≤ t , n ≤ 100 1\leq t,n\leq100 1t,n100,每个字符串的长度不超过 10 10 10

参考程序

#include<bits/stdc++.h>
using
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值