万卷网 > 题目详情
题型:编程题

字符排序

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有 n 个仅包含小写字母的字符串 s1,s2,...,sn,小杨想将这些字符串按一定顺序排列后拼接到一起构成字符串 t 。小杨希望最后构成的字符串 满足:

假设 ti为字符串 t 的第 i 个字符,对于所有的 j<i 均有 tj≤ti。两个字符的大小关系与其在字母表中的顺序一致,例如e<g<p<s。

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

输入格式

第一行包含一个正整数 T TT,代表测试数据组数。

对于每组测试数据,第一行包含一个正整数 n ,含义如题面所示。

之后 n 行,每行包含一个字符串 si。

输出格式

对于每组测试数据,如果存在满足条件的排列顺序,输出 1,否则输出 0。


输入样例

3
3
aa
ac
de
2
aac
bc
1
gesp

输出样例

1
0
0

样例解释

对于第一组测试数据,一种可行的排列顺序为 aa+ac+de,构成的字符串 t 为 aaacde,满足条件。

对于全部数据,保证有 1≤t,n≤100,每个字符串的长度不超过 10。

更新时间:2025-06-01 14:53:56 |
【知识点】 CCF—GESP C++四级

相似题推荐

判断题

考虑用如下递推方式计算斐波那契数列,时间复杂度是 O(n)。

int n = 10; 
int f[20]; 
f[0] = 0; 
f[1] = 1; 
for (int i = 2; i <= n; i++) 
    f[i] = f[i - 1] + f[i - 2];
A.正确 B.错误
2026-07-22
判断题

小杨正在调试他的温度传感器程序,其中变量 x 保存当前温度。下面这段代码运行后,变量 x 的值变成

了 8 。

int x = 5; 
int *p = &x; 
*p = *p + 3;
A.正确 B.错误
2026-07-22
判断题

下面这段代码实现了选择排序算法。

void sort(int a[], int n) { 
    for (int i = 1; i < n; i++) { 
        int x = a[i]; 
        int j = i - 1; 
        while (j >= 0 && a[j] > x) { 
            a[j + 1] = a[j]; 
            j--; 
        } 
        a[j + 1] = x; 
    } 
}
A.正确 B.错误
2026-07-22
单选题

给定函数 climbStairs(int n) 的定义如下,则 climbStairs(5) 的返回的值是( )。

int climbStairs(int n) { 
    if(n <= 2) return n; 
    int a = 1, b = 2; 
    for(int i = 3; i <= n; i++) { 
        int temp = a + b; 
        a = b; 
        b = temp; 
    } 
    return b; 
}
A.

5

B.

8

C.

13

D.

18

2026-07-22
单选题

执行下面 C++ 程序,会输出( )。

int main() { 
    ofstream fout("test.txt"); 
    fout << "Happy" << endl; 
    fout << "New Year"; 
    fout.close(); 
    ifstream fin("test.txt"); 
    string s1, s2; 
    fin >> s1; 
    getline(fin, s2); 
    fin.close(); 
    cout << s1 << "|" << s2; 
    return 0; 
}
A.Happy|New Year B.Happy| New Year
C.HappyNew Year| D.Happy|
2026-07-22
公众号
客服 反馈
顶部