zoukankan      html  css  js  c++  java
  • (算法)构造最大数

    题目:

    给定一个只包含正整数的数组,给出一个方法,将数组中的数拼接起来,使得拼接后的数最大。例如,[1, 32, 212]拼接之后,所得到的最大数为322121。

    思路:

    比较方法:两个数先后顺序的确定,如a,b,如果ab>ba(转换为字符串,通过字典序排序),则a在b的前面;

    通过上面的比较方法,就可以对数组中的整数进行从大到小的排序,最终输出的数组组成的就是最大数。

    代码:

    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    struct cmp{
        bool operator()(const string &a,const string &b){
            string s1=a+b;
            string s2=b+a;
            return s1>s2;
        }
    };
    
    bool comp(const string &a,const string &b){
        string s1=a+b;
        string s2=b+a;
        return s1>s2;
    }
    
    void getMaxNum(const vector<int> &A,int n){
        vector<string> str(n);
    
        for(int i=0;i<n;i++){
            stringstream ss;
            ss<<A[i];
            ss>>str[i];
        }
    
        sort(str.begin(),str.end(),cmp());
        //sort(str.begin(),str.end(),comp);
    
        for(int i=0;i<n;i++)
            cout<<str[i];
        cout<<endl;
    }
    
    int main()
    {
        int n;
        while(cin>>n){
            vector<int> A(n);
            for(int i=0;i<n;i++)
                cin>>A[i];
    
            getMaxNum(A,n);
        }
        return 0;
    }
  • 相关阅读:
    数组相关操作
    控制结构和函数
    调用函数和方法
    常用类型、算术和操作符重载
    函数式 CSS (FCSS)
    Javascript 封装问题
    认识javascript中的作用域和上下文
    Javascript 继承-原型的陷阱
    解耦你的HTML,CSS和JAVASRIPT
    网格如此简单
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4848646.html
Copyright © 2011-2022 走看看