数字游戏

来源:互联网 发布:视频推广网站源码 编辑:程序博客网 时间:2024/06/11 20:10

点击打开链接

 

数字游戏

Time Limit: 1000MS    Memory limit: 65536K

题目描述

        在现实生活中,我们常常会面对数字,而当给定一系列数字的时候,将他们采用不同的顺序排列在一起,是会找到一个最大值的,比如 数字13 和数字 81 ,他们两个和在一起形成的最大值是8113.

输入

      输入一个整数n(n<=50),代表接下来会输入n个数字,当输入n==0的时候,输入结束

输出

      这n个数字所能形成的最大数字

示例输入

213 810

示例输出

8113

提示

 

来源

 GYX
 
 
 
 
这个题我是在师哥师姐的讲解下,终于弄明白了。这个题用qsort去做的话就会很简单。我也明白了qsort的用法。收货颇大。
#include<stdio.h>#include<string.h>#include<stdlib.h>int cmp(const void*_a,const void*_b){    int i,j;    char* a=(char*)_a;    char* b=(char*)_b;    /*if(strlen(a)==strlen(b))    {        return strcmp(a,b);    }*/    //else if(strlen(a)<strlen(b))    //{        char t1[400]="";        char t2[400]="";        int la,lb;        la=strlen(a);        lb=strlen(b);        for(i=0;i<la;i++)        {            t1[i]=*(a+i);        }        for(j=0;j<lb;j++)        {            t1[i+j]=*(b+j);        }        for(i=0;i<lb;i++)        {            t2[i]=*(b+i);        }        for(j=0;j<la;j++)        {            t2[i+j]=*(a+j);        }        return strcmp(t1,t2);   // }}int n;char str[55][200];int main(){    int i,j,k,l;    while(scanf("%d",&n)&&n!=0)    {        memset(str,0,sizeof(str));        for(i=0;i<n;i++)        {            scanf("%s",&str[i]);        }        qsort(str,n,sizeof(str[0]),cmp);        for(i=n-1;i>=0;i--)            printf("%s",str[i]);        printf("\n");    }    return 0;}

 

 

原创粉丝点击