您的位置:首页 > 其它

把数组排成最小的数

2016-03-25 21:42 204 查看
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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
;
int i = 0;
for( i=0; i<n ;i++){
cin >> array[i];
}

printminNum( array, n);
delete [] array;
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: