删数问题
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 210 测试通过 : 38
总提交 : 210 测试通过 : 38
比赛描述
给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。
对于给定的正整数a,编程计算删去k个数字后得到的最小数。
输入
文件的第1 行是1 个正整数a。第2 行是正整数k。
输出
程序运行结束时,将计算出的最小数输出。
样例输入
178543
4
样例输出
13
提示
undefined
题目来源
NUAA
#include<iostream>
#include<string>
using namespace std;
int main(){
int i,k;
string s;
cin>>s>>k;
if(k>=(int)s.length()){
printf("0\n");
return 0;
}
while(k>0){
for(i=0; i<(int)s.length()-1 && s[i]<=s[i+1]; i++);
s.erase(i,1); //删除第一个变小子队列的队首 如果没有递减子序列的话,删除最后一个
k--;
}
while(s.size()>1 && '0'==s[0]){
s.erase(0,1);
}
cout<<s<<endl;
}