# 删数问题
## 题目描述
键盘输入一个高精度的正整数 $N$(不超过 $250$ 位),去掉其中任意 $k$ 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 $N$ 和 $k$,寻找一种方案使得剩下的数字组成的新数最小。
## 输入格式
输入两行正整数。
第一行输入一个高精度的正整数 $n$。
第二行输入一个正整数 $k$,表示需要删除的数字个数。
## 输出格式
输出一个整数,最后剩下的最小数。
## 样例 #1
### 样例输入 #1
```
175438
4
```
### 样例输出 #1
```
13
```
#include<bits/stdc++.h>
using namespace std;
int shu[300],jieguo[300];
int main()
{
string a;
cin>>a;//输入字符串
int len=a.length();//计算字符串的长度
int k;
cin>>k;
int num=0;
for(int i=0;i<len;i++)
shu[++num]=a[i]-'0';//将字符串数字转化到数组中,并从下标1开始
int temp=1,ans=len-k,x=0;//temp为书签,ans为要取的数字个数,x为下标
int res=0;//前面数字用了的长度
while(ans--)//一共要取ans次数
{
int min=11,j;
for(int i=temp;i<=temp+k-res;i++)
{
if(shu[i]<min)
{
min=shu[i];//判断最小数
j=i;//记录最小数的编号
}
}
res+=j-temp;//累加长度
jieguo[x]=shu[j];//最小数存到结果数组中
x++;
temp=j+1;//书签移动到j下一个位置
}
bool flag=0;//去除前导0
for(int i=0;i<x;i++)
{
if(jieguo[i]!=0)
flag=1;
if(flag==1)
cout<<jieguo[i];
}
if(flag==0)//进行特判
cout<<0;
return 0;
}