社区讨论

0分求调,样例过了。

B4069[GESP202412 四级] 字符排序参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjhc0mu
此快照首次捕获于
2025/11/04 02:34
4 个月前
此快照最后确认于
2025/11/04 02:34
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
//判断一个字符串是否有序;
bool check(const string &s){
	//cout<<"s is -> "<<s<<"\n";
	for(int i=1;i<s.size();i++){
		if(s[i-1]>s[i]) return false;
	}
	return true;
}
bool cmp(const string &s,const string &s1){
	int n=s.size(),n1=s1.size();
	if(s[0]!=s1[0]) return (s[0]<s1[0]);
	else return (s[n]<s1[n1]);
}
string s[101];
int main(){
	int n,k,fl[101]={0};
	//n是几组数据,k是数据当中有几个字符串;
	cin>>n;
	bool f=true;
	for(int i=1;i<=n;i++){
		cin>>k;
		for(int j=1;j<=k;j++){
			//输入;
			cin>>s[j];
		}
		for(int j=1;j<=k;j++){
			//当其中一个单词无序就输出后break;
			if(!check(s[j])){
				fl[i]=0;
				f=false;
				break;
			}
		}
		//排序后判断是否有序;
		//第一个要头尾最小,第二个比第一个尾大并且尾第二个小,后面类推;
		if(f){
		sort(s+1,s+k+1,cmp);
		string s1="";
		for(int l=1;l<=k;l++) s1+=s[l];
		fl[i]=check(s1);
		}
		f=true;
	}
	for(int i=1;i<=n;i++) cout<<fl[i]<<"\n";
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...