#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string str[100]="";
string ChangeIntToString(int num){
stringstream ss;
string s;//用来放转换成string的数值
ss<<num;//将int类型数组放入输入流中
ss>>s;//从ss中抽取前面插入的int类型的值,并且赋予string类型
return s;//返回string类型的值
}
string greedyMAX(int num[],int n){
string strmax="";
for (int i = 0; i < n; ++i) {
str[i] = ChangeIntToString(num[i]);//把num数组中的每个值都变成string类型保存到str数组中
}
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {//类似于冒泡算法,依次比较找出所有中string类型最大的
if ((str[i]+str[j]).compare(str[j] + str[i]) < 0) {//如果str[i]+str[j] 小于str[j]+str[i]则交换
string temp=str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
for (int i = 0; i < n; ++i) {
strmax += str[i];
}
return strmax;
}
int main(){
int n;
cout<<"请输入整数的个数:";
cin>>n;
int num[n];
cout<<"请输入各整数:";
for(int i=0;i<n;i++){
cin>>num[i];
}
string res=greedyMAX(num,n);
cout<<"最终结果为:"<<res<<endl;
return 0;
}
主要是转换成string类型来做,不然单纯用几个排序的贪心算法,可能会出现错误,当然,可以尝试用一下基数排序算法试试。