输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
using namespace std;
bool compare( const string &str1, const string &str2){
string s1 = str1 + str2;
string s2 = str2 + str1;
return s1 < s2;
}
void printminNum( int number[], int length){
if ( number == NULL || length <= 0)
cout<<"error"<<endl;
int i;
string *strnum = new string [length];
for (i=0 ; i<length ; i++){
stringstream ss;
ss << number[i];
ss >> strnum[i];
}
sort( strnum, strnum+length , compare);
for( i=0; i<length; i++){
cout << strnum[i] ;
}
cout << endl;
}
int main(){
cout << "请输入数组长度:";
int n = 0;
cin >> n;
cout << "请输入数组各值:";
int *array = new int [n];
int i = 0;
for( i=0; i<n ;i++){
cin >> array[i];
}
printminNum( array, n);
delete [] array;
return 0;
}