把数组排成最小的数

来源:互联网 发布:凯文考试软件 编辑:程序博客网 时间:2024/06/04 00:31
题目描述:

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

解答:数组转换成字符串,再排个序,从小到大输出就是最小的数了。

#include<iostream>#include<string>#include<stdlib.h>#include<algorithm>using namespace std;int comp(string str1,string str2){string s1=str1+str2;string s2=str2+str1;return s1<s2;}void min_num(int a[],int n){string *pstr=new string[n];for(int i=0;i<n;i++){char str[10];itoa(a[i],str,10);pstr[i]=str;}sort(pstr,pstr+n,comp);for( i=0;i<n;i++)cout<<pstr[i];cout<<endl;}int main(){int a[3]={12,43,21};min_num(a,3);}


0 0
原创粉丝点击