SDUT2038-----数字游戏

数字游戏

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

2
13 81
0

示例输出

8113

提示

 

来源

 GYX

示例程序

 
  • 提交
  • 状态
  • 讨论
  • #include <iostream>
    #include<cstring>
    #include<cstdio>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<string>
    #include<algorithm>
    using namespace std;
    bool cmp(string a,string b)
    {
        return a+b>b+a;        //模拟叠加效果;
    }
     int main()
     {
    
            int n;
        string a[55];
        while(cin>>n)
        {
            if(n==0)
                break;
            for(int i=0;i<n;i++)
            {
                cin>>a[i];
            }
            sort(a,a+n,cmp);
           for(int i=0;i<n;i++)
            cout<<a[i];
            cout<<endl;
           }
        return 0;
    }
    


你可能感兴趣的:(SDUT2038-----数字游戏)