#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類型來做,不然單純用幾個排序的貪心算法,可能會出現錯誤,當然,可以嘗試用一下基數排序算法試試。