练习系统 实验三 最小数(删数)

来源:互联网 发布:sqlserver误删数据恢复 编辑:程序博客网 时间:2024/04/30 13:45

当前编程题:实验三 大数、枚举问题(16级)---最小数

7.
问题描述
将给定的整数M,从中去掉K位后使所得数最小。
 例:整数:1342426735 去掉4 结果最小为122635
输入形式
一行,第一个数为十进制表示的整数MM位长最多为20;第二个数为整数K
输出形式
去掉K位后的最小值。
样例输入
1342426735 4
 样例输出
122635


#include<iostream>
#include<string>
using namespace std;
int main()
{
    string n;
    int s,i,x,l,m;
    while(cin>>n>>s)
    {
         i=-1,m=0,x=0;
         l=n.length(); 
         while(x<s&&m==0)
          {
              i++;
              if(n[i]>n[i+1])//出现递减,删除递减的首数字 
               {
                   n=n.erase(i,1);
                   x++;// x统计删除数字的个数 
                   i=-1;//从头开始查递减区间 
               } 
              if(i==l-x-2&&x<s)
              m=1;//已经无递减区间,m=1脱离循环 
          } 
      cout<<n.substr(0,l-s+x)<<endl;//只打印剩下的左边l-(s-x)个数字 
    } 
    return 0;   
}
0 0
原创粉丝点击