0
已解决
张曈
高级守护
高级守护
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(string s1,string s2)
{
return s1.size()==s2.size()? s1+s2<s2+s1 : s1.size()<s2.size();
}
int main()
{
string a[101];
int n,m,i;
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n,cmp);
for(i=1;i<=m;i++)
cout<<a[i];
return 0;
}
以上是代码
注意,仅给出自己代码、本题总思路、修改方法等而不给出错误原因不予采纳
0
已采纳
徐铭凯
资深守护
资深守护
举个反例
3 2
99 101 110
你的输出:99101
正确输出:10199
你程序只能选出应选的所有数字,但无法排出他们的正确顺序。
(确实该选99、101啊)
正确:
排两次序。
第一次,排1~n,主条件长度从小到大,副条件a+b<b+a。(就是你的排序)
第二次,排1~m,条件a+b<b+a。
就能AC啦。
(陆老师讲过这题,你没听,看不懂我的程序后果自负)
徐铭凯在2018-08-15 11:57:54追加了内容
(我这符合要求吧)
0
杨子逸
新手天翼
新手天翼
bool cmp_n(string a,string b) { if(a.size()!=b.size()) return a.size()<b.size(); return a+b<b+a; } bool cmp_m(string a,string b) { return a+b<b+a; }
0
0