• 洛谷 P1106 删数问题


    题目描述

    键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。

    输出应包括所去掉的数字的位置和组成的新的整数。(N不超过250位) 输入数据均不需判错。

    输入输出格式

    输入格式:

     

    n (高精度的正整数)

    k (需要删除的数字个数)

     

    输出格式:

     

    最后剩下的最小数。

     

    输入输出样例

    输入样例#1: 复制
    175438 
    4
    
    输出样例#1: 复制
    13
    思路:贪心。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm> 
    using namespace std;
    char s[10000002];
    int k;
    int main() {
        scanf("%s",s);
        scanf("%d",&k);
        int i=0,j=1;
        while(s[j-1]>0) {
            if(k<=0||s[i]<=s[j])    s[++i]=s[j++];
            else{ i--;k--; }
        }
        for(i=0;s[i]=='0'&&i<strlen(s)-1;i++);    printf("%s", s+i);
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    Java进阶知识查漏补缺06
    SQL学习记录(concat)
    Restful API学习
    git学习
    获得xmlhttp对象
    vue-cli初接触
    vue初接触
    java使用百度UNIT
    JSON学习
    通用Mapper警告:建议修改基本类型为对应的包装类型!
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7898602.html
Copyright © 2020-2023  润新知