题解 P14357

· · 题解

题解 P14357

题目大意

给定一个字符串 s ,从中选择几个数字,让它们组合的新数最大

具体解法

根据小学学的知识我们可以知道要想使得由 1,2,3 组成的数字最大,应该从大到小从高到低把它们填入数中即可做到最大,即 321
考虑到把所有的数存进一个数组 a ,把数组 a 进行从大到小的排序,然后依次输出
实现代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int arr[1000000];
    int cnt=0;
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]>='0'&&s[i]<='9') arr[cnt++]=s[i]-'0';
    }
    sort(arr,arr+cnt,greater<int>());
    for(int i=0;i<cnt;i++) cout<<arr[i];
}

小提示:

如果待排序的数不是 int 类型的,那么在 greater<int>() 中就要把 int 替换成其他类型了
管理员过一下吧~球球了qwq ~