Arrange an Array to Form a Smallest Digit
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arrange an Array to Form a Smallest Digit相关的知识,希望对你有一定的参考价值。
/** * 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; */ // 功能:将输入的数组排成最小的数 // 输入: int a[]:整型数组 // int nCount:数组长度 // char * strRst 返回值 // 输出: // 返回:成功返回0 异常返回-1 #include <iostream> #include <string> #include <vector> #include <sstream> #include <algorithm> using namespace std; bool cmp(string str1, string str2) { return (str1 + str2 < str2 + str1); } int smallestDigit(int a[], int nCount, char *strRst) { if(NULL == a || nCount <= 0 || NULL == strRst) { return -1; } vector<string> numStrs; stringstream strStream; string num; /*! int转string */ for(int i = 0; i < nCount; ++i) { strStream << a[i]; strStream >> num; strStream.clear(); numStrs.push_back(num); } sort(numStrs.begin(), numStrs.end(), cmp); int len = 0; for(int i = 0; i < numStrs.size(); ++i) { len = numStrs[i].size(); strncpy(strRst, numStrs[i].c_str(), len); strRst += len; } *strRst = ‘\0‘; return 0; } int main() { int a[] = {4589, 101, 41425, 9999}; char buf[1000]; smallestDigit(a, 4, buf); cout << buf << endl; return 0; }
以上是关于Arrange an Array to Form a Smallest Digit的主要内容,如果未能解决你的问题,请参考以下文章
[GeeksForGeeks] Sort an array in wave form
[MST] Create an Entry Form to Add Models to the State Tree
[Python Cookbook] Numpy: Multiple Ways to Create an Array
HDU 5653 Bomber Man wants to bomb an Array. DP