当前编程题:实验三 大数、枚举问题(16级)---最小数
7. 问题描述 将给定的整数 M ,从中去掉 K 位后使所得数最小。 例:整数: 1342426735 去掉 4 位 结果最小为 122635 输入形式 一行,第一个数为十进制表示的整数 M , M 位长最多为 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; }