CCF GESP 2025/12/24 模拟测试 C++ 4级 编程题2

字符排序

题面描述

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

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

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

输入格式

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

对于每组测试数据,第一行包含一个正整数 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。

语言及编译选项

# 名称 编译器 额外参数 代码长度限制
1 g++ with std11 g++ -O2 -std=c++11 -DONLINE_JUDGE 65536 B
cpp 复制代码
#include <bits/stdc++.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int t,n;
string a[100];
bool bt=true;
void s(int lx,int rx){//快速排序 
	if(lx>=rx)return;
	int l=lx,r=rx;
	string temp=a[l];
	while(l<r){
		while(l<r){
			if(a[r][0]<temp[0]){
				a[l++]=a[r];
				break;				
			}
			r--;
		}		
		while(l<r){
			if(a[l][0]>temp[0]){
				a[r--]=a[l];
			}
			l++;
		}	
	}
	a[l]=temp;
	s(lx,l-1);
	s(l+1,rx);
}
bool is(int n){
	//先检测每个string 自己内部是否符合  对于所有的 j<i 均有 tj≤ti
	for(int i=0;i<n;i++){
		for(int j=0;j+1<a[i].length();j++){
			if(a[i][j]>a[i][j+1])return false;
		}
	}
	//按每组字符串 首字母排序
	s(0,n-1);
	for(int i=1;i<n;i++){
		if(a[i-1][a[i-1].length()-1]>a[i][0]){
			return false;
		}
	}
	//cout<<endl;
	return true;
}
int main(int argc, char** argv) {
	cin>>t;
	for(int i=0;i<t;i++){
		cin>>n;
		for(int j=0;j<n;j++){
			cin>>a[j];
		}		
		cout<<is(n)<<endl;
	}
	return 0;
}
相关推荐
fqq36 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
2501_906565128 小时前
数学之美探究
算法
oier_Asad.Chen8 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
leisoo809710 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
luj_176812 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
wuyk55512 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
郝学胜-神的一滴13 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆13 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng13 小时前
2024牛客暑期多校训练营1
算法
hetao173383713 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法