数组组成最小数字
来源:互联网 发布:mac 口红brave 编辑:程序博客网 时间:2024/05/07 08:41
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
#include <iostream>using namespace std;int NumberMaxLength = 10;char* combine1 = new char[NumberMaxLength*2 +1];char* combine2 = new char[NumberMaxLength*2 +1];int compare(const void* str1, const void* str2){strcpy(combine1,*(const char**)str1);strcat(combine1,*(const char**)str2);strcpy(combine2,*(const char**)str2);strcat(combine2,*(const char**)str1);return strcmp(combine1,combine2);}void PrintNumber(int* number, int length){if(number == NULL || length <= 0)return ;char** str = (char**)(new int[length]);for (int i = 0; i < length; i++){str[i] = new char[NumberMaxLength +1];sprintf(str[i],"%d",number[i]);}qsort(str, length, sizeof(char*), compare);for(int i=0 ;i< length;i++){printf("%s",str[i]);}printf("\n");for(int i = 0;i < length; i++)delete [] str[i];delete[] str;}
// ====================测试代码====================void Test(char* testName, int* numbers, int length, char* expectedResult){ if(testName != NULL) printf("%s begins:\n", testName); if(expectedResult != NULL) printf("Expected result is: \t%s\n", expectedResult); printf("Actual result is: \t"); PrintNumber(numbers, length); printf("\n");}void Test1(){ int numbers[] = {3, 5, 1, 4, 2}; Test("Test1", numbers, sizeof(numbers)/sizeof(int), "12345");}void Test2(){ int numbers[] = {3, 32, 321}; Test("Test2", numbers, sizeof(numbers)/sizeof(int), "321323");}void Test3(){ int numbers[] = {3, 323, 32123}; Test("Test3", numbers, sizeof(numbers)/sizeof(int), "321233233");}void Test4(){ int numbers[] = {1, 11, 111}; Test("Test4", numbers, sizeof(numbers)/sizeof(int), "111111");}// 数组中只有一个数字void Test5(){ int numbers[] = {321}; Test("Test5", numbers, sizeof(numbers)/sizeof(int), "321");}void Test6(){ Test("Test6", NULL, 0, "Don't print anything.");}int main(int argc, char* argv[]){ Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); return 0;}
0 0
- 数组组成最小数字
- 把数组中的数字拼接起来组成最小的数
- 输入数组元素,由这些元素组成的最小数字
- 把数组中数字连起来组成一个最小的数字
- 19 获取给定的数组能够组成的最小的数字
- 旋转数组最小数字
- 旋转数组最小数字
- 数组中组成最小的数
- 将数组排序组成最小的整数
- 将数组组成最小的数
- 正数数组的最小不可组成和
- 正整数数组的最小不可组成和
- 替换数组中最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 将任意类型数组变为集合
- 无线路由器开启或关闭DHCP
- %I64d %I64u
- 数据结构中排序算法- 图书馆排序(6)
- boost线程之类成员函数
- 数组组成最小数字
- UE4 Static Mesh LODs
- 2015多校联合第三场5319painter
- 程序=方案+代码
- UE4 FBX Static Mesh Pipeline
- Objective-C语法之代码块(block)的使用
- 深度学习
- java list转换为树形
- 20150902学习记录