题目
一个正整数N,去掉其中任意k个数字后剩下的数字按原次序组成新的正整数,使得剩下的数字组成的新数最小。
分析
按照一般的思想是快排,可是并不是这样,而是删掉递减序列,如果没有产生就是最后k个被删掉(注意前导0)。
代码
#include <cstdio>
#include <cstring>
using namespace std;
char s[251]; int n,len; bool flag;
int main(){
scanf("%s",s); len=strlen(s); scanf("\n%d",&n);
for (int i=1;i<=n;i++){
for (int j=0;j<len-1;j++)
if (s[j]>s[j+1]){
for (int k=j;k<len-1;k++) s[k]=s[k+1]; break;}
len--;
}
int cnt=0;
for (int i=0;i<len;i++){
if (s[i]!='0') flag=1;
if (flag) putchar(s[i]),cnt++;
}
if (!cnt) putchar('0');
return 0;
}