整数拼数 C语言版

题意是给出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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午4:57
下一篇 2023年2月7日 下午4:58

相关推荐