Arrange an Array to Form a Smallest Digit

来源:互联网 发布:阿里巴巴有淘宝客吗 编辑:程序博客网 时间:2024/05/21 13:58

描述: 

Question: 

Input an array of positive integers, arrange the integers to form new digits, and output the smallest digit among all the new ones. 

 

Input Example 1: 

{2, 1}

Output Example 1:

12

 

Input Example 2:

{32, 321}

Output Example 2:

32132

 

Input Example 3:

{4589, 101,41425,9999}

Output Example 3:

1014142545899999;

 

 

Interface: 

int  smallestDigit(int a[],int nCount,char * strRst)

Function: Arrange digits in the input array to form a smallest digit. 
Input: int a[]: an array of integers

int nCount: length of the array

char * strRst: returned value
Output: none
Return: o indicates success and -1 indicates exception. 



#include "oj.h"#include <stdlib.h>#include <string.h>#include <stdio.h>#include <iostream>  #include <sstream>  using namespace std;// 功能:将输入的数组排成最小的数// 输入: int a[]:整型数组//        int nCount:数组长度//        char * strRst 返回值// 输出:// 返回:成功返回0  异常返回-1int myCompare(const void *str1 , const void *str2){char *s1 = new char[20]();char *s2 = new char[20]();strcpy(s1 , *(const char **)str1);strcat(s1 , *(const char **)str2);strcpy(s2 , *(const char **)str2);strcat(s2 , *(const char **)str1);int result = strcmp(s1 , s2);delete [] s1;delete [] s2;return result;}int  smallestDigit(int a[],int nCount,char * strRst){if(!a || nCount<=0)return -1;int i;char **strNumbers = (char **)(new int[nCount]());for(i=0; i<nCount; i++)  {  strNumbers[i] = new char[10]();sprintf(strNumbers[i] , "%d" , a[i]);}  qsort(strNumbers, nCount , sizeof(char *) , myCompare);for(i=0; i<nCount; i++)  {strcat(strRst , strNumbers[i]);}for(int i = 0 ; i < nCount ; i++)delete [] strNumbers[i];delete [] strNumbers; return 0;}



0 0
原创粉丝点击