• 洛谷P1012 拼数(水题 字符串


    题目描述

    设有nn个正整数(n≤20)(n20),将它们联接成一排,组成一个最大的多位整数。

    例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213

    又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613

    输入 #
      3
    13 312 343
    
    输出 #1
     
    34331213


     
     
    今天的最后一水x(就 上午随手开的字符串专题顺手写完了,,),题目挺简单的,,拼凑最大很明显的就是根据字符串字典序排,而不是整数大小(要保证高位的数字尽可能大),,最后一例wa点就是,当一个串是另一个的字串时,需要特判一下,不能只看字典序放。
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int N = 1e3+7;
     5 string s[100];
     6 bool cmmp(string a,string b){
     7     int la = a.size(),lb = b.size();
     8     int l = min(la,lb);
     9     for(int i = 0;i < l;++i){
    10         if(a[i]>b[i])return 1;//a在b前 1 
    11         else if(a[i]<b[i])return 0;
    12     }
    13     if(la>lb){
    14         if(a[lb]>a[0])return 1;
    15         else return 0;
    16     }
    17     else if(la < lb){
    18         if(b[la]>b[0])return 0;
    19         else return 1; 
    20     }
    21     return 1;
    22 }
    23 int main(){
    24     int n;string tp;
    25     ios::sync_with_stdio(0);
    26     cin>>n;
    27     for(int i = 0;i < n;++i)cin>>s[i];
    28     for(int i = 0;i < n;++i){
    29         for(int j = i+1;j < n;++j){
    30             if(cmmp(s[i],s[j])==0){
    31                 tp = s[i];s[i] = s[j];s[j] = tp;
    32             }
    33         }
    34     }
    35     for(int i = 0;i < n;++i)cout<<s[i];cout<<endl;
    36 }
  • 相关阅读:
    深入研究Node.js的底层原理和高级使用
    Node.js实际案例分享
    Node.js的下载、安装、配置、Hello World、文档阅读
    Node.js初识
    sphinx初识
    Yii2中后台用前台的代码设置验证码显示不出来?
    彻底解决Yii2中网页刷新时验证码不刷新的问题
    yii2高级模板使用一个域名管理前后台
    Shot(三分)
    遮挡判断(模拟)
  • 原文地址:https://www.cnblogs.com/h404nofound/p/12179921.html
Copyright © 2020-2023  润新知