爱奇艺 数字游戏 数学

题目描述

牛牛举办了一场数字游戏,有n个玩家参加这个游戏,游戏开始每个玩家选定一个数,然后将这个数写在纸上(十进制数,无前缀零),然后接下来对于每一个数字将其数位按照非递减顺序排列,得到新的数,新数的前缀零将被忽略。得到最大数字的玩家赢得这个游戏。

输入描述:

输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 50),即玩家的人数
第二行n个整数x[i](0 ≤ x[i] ≤ 100000),即每个玩家写下的整数。

输出描述:

输出一个整数,表示赢得游戏的那个玩家获得的最大数字是多少。

示例1

输入

3
9638 8210 331

输出

3689
#include<iostream>
#include<algorithm>
using namespace std;
string sortStr(string s,int len)
{
    for(int i=0;i<len;++i)
    {
        for(int j=0;j<len-1-i;++j)
        {
            if(s[j]>s[j+1])
            {
                char temp=s[j];
                s[j]=s[j+1];
                s[j+1]=temp;
            }
        }
    }
    return s;
}
int main()
{
    int n,len,cnt;
    string str;
    string ans;
    //while(cin>>n)
    {
        cin>>n;
        cnt=-1<<30;
        for(int i=0;i<n;++i)
        {
            cin>>str;
            len=str.length();
            for(int i=0;i<len;++i)
            {   
                if(str[i]=='0') len--;
            }
            if(len>cnt)
            {
                int l=str.length();
                cnt=len;
                str=sortStr(str,l);
                ans=str;
            }else if(len==cnt)
            {
                int l=str.length();            
                str=sortStr(str,l);
                //cout<<str<<endl;
                for(int i=0;i<l;++i)
                {
                    if(str[i]>ans[i])
                    {
                        ans=str;
                        break;
                    }else if(str[i]<ans[i])
                    {
                        break;
                    }
                }
            }
        }
        int len=ans.length();
        for(int i=0;i<len;++i)
        {
            if(ans[i]!='0')
            {
                cout<<ans[i];
            }
        }
        cout<<endl;
    }
    return 0;
}
Last modification:January 11th, 2020 at 11:58 pm
如果觉得我的文章对你有用,请随意赞赏