这题无解吧!!!

正解来喽(@ 单均浩的思路)

#include <bits/stdc++.h>
using namespace std;
string a[5010];
int n;
bool cmp(string s1,string s2){
	return s1<s2;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

13 个赞

你这咋是正解了啊

12 个赞

这个过不了吗?不是能过吗

12 个赞

可能不是正解,但应该是其中一个解

12 个赞

你咋过的?你这怎么能过的?

12 个赞

送你一个堆排序

#include<bits/stdc++.h>
using namespace std;
int len,i,n,a[30001],s;
void put(int t)
{
	int son,pa;
	a[++len]=t;
	son=len;
	while(son>1)
	{
		pa=son/2;
		if(a[son]>=a[pa]) break;
		swap(a[son],a[pa]);
		son=pa;
	}
}
int get()
{
	int pa=1,son,l=a[1];
	a[1]=a[len--];
	while(pa*2<=len)
	{
		son=pa*2;
		if(son<len&&a[son+1]<a[son]) son++;
		if(a[pa]<=a[son]) break;
		swap(a[son],a[pa]);
		pa=son;
	}
	return l;
}
void work()
{
	int x,y;
	for(int i=1;i<=n;++i)
	{
		cin>>x;
		put(x);
	}
	for(int i=1;i<=n;++i) cout<<get()<<" ";
}
int main()
{
	cin>>n;
	work();
	return 0;
}
12 个赞

搞错了

#include<bits/stdc++.h>
using namespace std;
struct s
{
	string b;
	int a,id;
}q[10001];
bool cmp(s x,s y)
{
	if(x.a==y.a) return x.b<y.b;
	return x.a<y.a;
}
int main()
{
	int i,n;
	cin>>n;
	for(i=1;i<=n;++i)
	{
		q[i].id=i;
		cin>>q[i].b;
		q[i].a=q[i].b.size();
	}
	sort(q+1,q+1+n,cmp);
	for(i=1;i<=n;++i) cout<<q[i].b<<" ";
	return 0;
}
11 个赞

谢谢大家!!!!!!

10 个赞

你这份代码是错的,string 的比较是基于字典序,而楼主要的是实际大小的比较

12 个赞

理论上说,我之前发的代码是正解

11 个赞

谢谢大佬指点

10 个赞

emmm这题感觉可以这么搞

#include<bits/stdc++.h>
using namespace std;
string s[5005];
int n;
bool cmp(string a,string b){
	if(a.length()!=b.length()){
		return a.length()<b.length();
	}
	return a<b;
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	sort(s,s+n,cmp);
	for(int i=0;i<n;i++){
		cout<<s[i]<<endl;
	}
	return 0;
}

容易理解,省事

10 个赞

浅压一手行

#include<bits/stdc++.h>
using namespace std;
string s[5005];
int n;
bool cmp(string a,string b){
	if(a.length()!=b.length()) return a.length()<b.length();
	return a<b;
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>s[i];
	sort(s,s+n,cmp);
	for(int i=0;i<n;i++) cout<<s[i]<<endl;
	return 0;
}
11 个赞

我说过 string 的比较是以字典序而不是转 int 的大小了。

10 个赞

这叫萌新
看得懂代码?

9 个赞

《跨帖讨论》

10 个赞

虽然但是,在长度相同下,字典序排序确实是正确的

10 个赞

我先判断了长度

9 个赞

萌新看的懂代码很正常(再说了大佬谦虚很正常)

9 个赞

请睁开您尊贵的眼睛看一看
image

10 个赞