zoukankan      html  css  js  c++  java
  • Problem1删数问题解题报告

    题目描述

        给定一正整数n(n的位数小于240),现要删除数n中的s个数码,使其得到的新数最小,求这个最小数。

    输入

        输入有两行,第一行为整数n,第二行即为s

    输出

    输出一行,即最小的那个数

    测试样例1

    输入

    123456

    1

    输出

    12345

    测试样例2

    输入

    234516

    3

    输出

    216

    解题思路

    首先考虑s=1时的情况,很容易知道如果只删一个数,那么若各位数字递增则删除最后一个数,否则删除第一个递减区间的首字符,这样删除便可以得到最小的数。而对于s>1时,我们只需要重复这种操作s次,得到的操作就是所求的最小数。

    程序代码

    using System;
    using System.Text;

    namespace tanxin
    {
    class delnum
    {
    static void Main(string[] args)
    {
    string n;
    int s;
    n
    = Console.ReadLine();
    s
    = int.Parse(Console.ReadLine());
    Console.WriteLine(GetMinNum(n, s).ToString());
    }
    public static StringBuilder GetMinNum(string n, int s)
    {
    bool flag;
    StringBuilder str
    = new StringBuilder(n);
    for (int i = s; i > 0; i--)
    {
    flag
    = false;
    for (int j = 0; j < str.Length - 1; j++)
    {
    if (str[j] > str[j + 1])
    {
    str.Remove(j,
    1);
    flag
    = true;
    break;
    }
    }
    if (!flag)
    {
    str.Remove(str.Length
    - i,i);
    break;
    }
    }
    return str;
    }
    }
    }
  • 相关阅读:
    按钮字体颜色的设置
    异常
    数据存储
    SQLiteOpenHelper
    MVC
    在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
    ListView 的优化方案
    fragment生命周期及优点
    ANR
    Android系统架构
  • 原文地址:https://www.cnblogs.com/Crakme/p/1978237.html
Copyright © 2011-2022 走看看