4661: 【GESP2412四级】字符排序

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

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

  • 假设  为字符串  的第  个字符,对于所有的  均有 。两个字符的大小关系与其在字母表中的顺序一致,例如 

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

输入

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

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

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


输出

对于每组测试数据,如果存在满足条件的排列顺序,输出(一行一个),否则输出(一行一个) 

样例输入 复制

3
3
aa
ac
de
2
aac
bc
1
gesp

样例输出 复制

1
0
0

提示

#include<bits/stdc++.h>
using namespace std;
string s[110];
void bubble_sort(string *a, int n) {
    bool flag = true;
    while (flag) {
        flag = false;
        for (int i = 1; i < n; ++i) {
            if (a[i] > a[i + 1]) {
                flag = true;
                string t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
}
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>s[i];
        }
        bubble_sort(s, n);
        string t="";
        for(int i=1;i<=n;i++){
            t+=s[i];
        }
        int m = t.size();
        int fl=1;
        for(int i=1;i<m;i++){
            if(t[i]<t[i-1]){
                fl=0;
                break;
            }
        }
        cout<<fl<<"\n";
    }
 }