问题标题: 酷町堂:2787

0
0
已解决
李瑞曦
李瑞曦
高级天翼
高级天翼

我的20分代码:

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string a[101];
bool cmp(string a,string b){
    if(a.size()!=b.size())
        return a.size()<b.size();
    return a+b<b+a;
}
bool cmp1(string a,string b){
    return a+b<b+a;
}
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a,a+n,cmp);
    sort(a,a+m,cmp1);
    for(int i=1;i<=m;i++)
        cout<<a[i];
    return 0;
}

求大佬帮帮忙


0
已采纳
康曦
康曦
中级光能
中级光能

我的代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;
string s[105];
bool cmp1(string x,string y){
	if(x.size()!=y.size()) return x.size()<y.size();
	return x+y<y+x;
}
bool cmp2(string x,string y){
	return x+y<y+x;
}
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>s[i];
	}
	sort(s+1,s+1+n,cmp1);
	sort(s+1,s+1+m,cmp2);
	for(int i=1;i<=m;i++){
		cout<<s[i];
	}
}

 

康曦在2020-10-18 10:22:10追加了内容

其实你只需要把两个sort变成(a+1,a+1+n,cmp)和(a+1,a+1+m,cmp1)就行了

我要回答