• 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;
        }
    }
    
    
    
     
  • 相关阅读:
    排行榜 和 zset
    SpringBoot使用@ServerEndpoint无法依赖注入问题解决(WebSocket
    idea 全局内容搜索和替换
    fiddler不能监听 localhost和 127.0.0.1的问题
    fiddle4 弱网测试
    nginx代理websocket连接上限
    spring boot Websocket
    SpringBoot----跨域配置
    注解@Slf4j的使用
    word 转 pfd
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3658447.html
Copyright © 2020-2023  润新知