题意是给出n个整数(整数是小于1000的)。求这些整数拼出来的最大或最小整数。
思路:类似与排序,只是排序的比较规则是若ab<ba 则a<b。
1 //此文件实现将输入的n个数(数小于1000)组合成一个大数,比且这个大数是组合中最小的一个 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 #include<string.h> 6 7 8 static int num_sort(const void* a, const void* b) 9 {10 const char * s1 = *((const char**)a);11 const char * s2 = *((const char**)b);12 int len1 = strlen(s1);13 int len2 = strlen(s2);14 char* cs1 = (char*)malloc((len1+len2+1)*sizeof(char));15 char* cs2 = (char*)malloc((len1+len2+1)*sizeof(char));16 strcpy(cs1,s1);17 strcpy(cs1+len1,s2);18 strcpy(cs2,s2);19 strcpy(cs2+len2,s1);20 int rt = strcmp(cs1,cs2);21 free(cs1),free(cs2);22 }23 24 25 int main()26 {27 int n;28 while(1)29 { 30 scanf("%d",&n);31 if(n<=0)32 break;33 char** nums = (char**)malloc(n*sizeof(char*));34 35 int i;36 37 for(i=0;i<n;i++)38 { 39 40 nums[i]=(char*)malloc(4*sizeof(char));41 scanf("%s",nums[i]);42 }43 qsort(nums,n,4,num_sort);44 45 for(i=0;i<n;i++)46 {47 printf("%s",nums[i]);48 free(nums[i]);49 }50 printf("\n");51 free(nums);52 }53 return 0;54 }55
感觉C实现比C++不好的地方在于比较函数简洁度,这是由于string的操作都已经实现好了,还是站在巨人的肩膀上好啊。
原文链接: https://www.cnblogs.com/wwillforever/archive/2010/10/26/1861287.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/16594
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!