社区讨论
本题贪心做法(建议降橙/黄)
P1012[NOIP 1998 提高组] 拼数参与者 13已保存回复 24
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 22 条
- 当前快照
- 1 份
- 快照标识符
- @mkp4fgy7
- 此快照首次捕获于
- 2026/01/22 15:19 4 周前
- 此快照最后确认于
- 2026/01/22 15:24 4 周前
(管理帖和工单不太敢发过来的)
这道题就是一道贪心题,但是考虑到数据范围和难度,用字符串似乎更好一些。
两个数字串首尾相接,要求组成的数最大,问题可以变化为两个字符串首尾相接,要求最后的字典序最大。那么我们就可以直接在
cmp函数里写s1+s2>s2+s1,也就是拼起来字典序如果更大就不交换。最后直接把cmp套进std::sort就可以了,总结下来就是贪心+排序的问题Code:
CPP#include<bits/stdc++.h>//16个月前的远古代码
using namespace std;
bool cmp(string s1,string s2){
return s2+s1<s1+s2;
}
int main(){
int n;
string s[30];
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
}
sort(s+1,s+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<s[i];
}
}
回复
共 24 条回复,欢迎继续交流。
正在加载回复...