坑题:很容易想错,用的是贪心的思想,对字符串进行排序,输出即可,主要是cmp函数的构造
坑点1: input: 90 和 9 output: 990
坑点2: intput 75756 和 75 output 7575756
1231 和123 output 1231231
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(string a,string b){
int i;
while(a.size() > b.size()){
for(i = 0; i < b.size(); i++){
if(a[i] < b[i])
return 1;
else if(a[i] > b[i])
return 0;
}
a = a.substr(i);
}
while(a.size() <= b.size()){
for(i = 0; i < a.size(); i++){
if(a[i] < b[i])
return 1;
else if(a[i] > b[i])
return 0;
}
b = b.substr(i);
}
int k;
for(k = 0; k < b.size(); k++){
if(a[k] < b[k])
return 1;
else if(a[k] > b[k])
return 0;
}
if(a[k] < b[0]){
return 1;
}else{
return 0;
}
}
int main(){
int n;
vector<string> num;
while(cin >> n && n){
num.clear();
num.resize(n);
for(int i = 0; i < n; i++){
cin >> num[i];
}
sort(num.begin(),num.end(),comp);
for(int i = n-1; i >= 0; i--){
cout<<num[i];
}
cout<<endl;
}
return 0;
}
本文介绍了一种利用贪心算法解决字符串排序问题的方法,并详细解释了如何通过自定义比较函数来实现特定的排序逻辑。文章包含具体的代码实现,帮助读者理解如何避免常见的陷阱和错误。
366

被折叠的 条评论
为什么被折叠?



