UVA 10905 Children's Game

来源:互联网 发布:免流软件 编辑:程序博客网 时间:2024/05/23 14:52

题意:给n个数字,求由这n个数字组成的最大的数

解题思路:要用string类型,因为数字可能很大超出int型范围。给字符串排序的时候也不能直接比较字符串的长度和大小,举个例子:3、12,组成最大的是312,而不是123,还有9、90,组成最大的是990,而不是909,所以这里的比较方法是a+b>b+a,就像3124>2431

代码:

#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <cmath>#include <cstdio>using namespace std;bool cmp(string s1,string s2){    return s1+s2>s2+s1;}int main(){    int n;    while(cin>>n&&n)    {        string s[55];        for(int i=0;i<n;i++)        {            cin>>s[i];        }        sort(s,s+n,cmp);        for(int i=0;i<n;i++)        {            cout<<s[i];        }        cout<<endl;    }    return 0;}


原创粉丝点击