【题目描述】
输入一个数字串 N,长度不超过 250 位,去掉其中任意k 个数字后剩下的数字按原左右次序将组成一个新的整数,要求组成新的整数最小。
【输入格式】
输入两行正整数。
第一行输入一个高精度的正整数n。
第二行输入一个正整数 k,表示需要删除的数字个数。
【输出格式】输出一个整数,最后剩下的最小数。
【样例输入】(测试数据不包含本样例)
175438
4
[样例输出]
13
思路:贪心
#include<iostream>
#include<string>
using namespace std;
int n,k,a[257],rest,t = 1,minn,cnt = 0;
bool flag = 0;
string s;
int main()
{
cin>>s>>k;
n = s.length();
for(int i = 1; i <= n; ++i)
{
a[i] = s[i - 1] - '0';
}
rest = n - k;
while(cnt < rest)
{
minn = t;
for(int i = t; i <= k + t; ++i)
{
if(a[minn] > a[i])
{
minn = i;
}
}
if(a[minn])
{
flag = 1;
}
if(flag == 1)
{
cout<<a[minn];
}
k -= minn - t;
t = minn + 1;
cnt++;
}
if(flag == 0)
{
cout<<0;
}
return 0;
}