zoukankan      html  css  js  c++  java
  • ACM 寻找最大数

    寻找最大数

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,

    比如当n=92081346718538,m=10时,则新的最大数是9888

     
    输入
    第一行输入一个正整数T,表示有T组测试数据
    每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
    输出
    每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
    样例输入
    2
    92081346718538 10
    1008908 5
    样例输出
    9888
    98

    本题题意是从n中删除m个数,使删除后的数保持最大,本题在输入n时直接定义n为字符串,len为n的长度
    则删除m个数后,剩余的数为len-m,设first = 0,second = m,
    故从first到second中取一个最大的数,其first = 最大数的索引+1,second++
    再从first 到second中取最大数,直到取完为止,即为答案
    #include <iostream>
    #include <string>
    #include <vector>
    #include <iterator>
    #include <algorithm>
    using namespace std;
    int main(){
        int T;
        cin >>T;
        for(int icase = 0 ; icase <  T; icase++){
            string n;
            int m;
            cin >>n >>m;
            vector<char> data(n.begin(),n.end());
            string res = "";
            int len = n.length(), first = 0 , second = m+1;
            for(int i = 0 ; i < len-m; ++i){
                vector<char>::iterator iter=max_element(data.begin()+first,data.begin()+second);
                res+=*iter;
                first = distance(data.begin(),iter)+1;
                second++;
            }
            cout<<res<<endl;
        }
    }
    
    
    
     
  • 相关阅读:
    洛谷 P2872 [USACO07DEC]道路建设Building Roads
    cogs 29. 公路建设
    cogs 7. 通信线路
    cogs 2478. [HZOI 2016]简单的最近公共祖先
    洛谷 P1342 请柬
    洛谷 P1186 玛丽卡
    洛谷 P1491 集合位置
    启动、停止、重启服务
    洛谷——P1025 数的划分
    洛谷——P3368 【模板】树状数组 2
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3658447.html
Copyright © 2011-2022 走看看