删数问题(贪心算法)
作者:互联网
题目描述
键盘输入一个高精度的正整数 NN(不超过 250250 位),去掉其中任意 kk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 NN 和 kk,寻找一种方案使得剩下的数字组成的新数最小。
输入格式
n(高精度的正整数 )。
k(需要删除的数字个数 )。
输出格式
最后剩下的最小数。
输入样例
175438
4
输出样例
13
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a; int n,t,cnt=0;
cin>>a>>n;
t=n;
while(t--)
{
for(int i=0;i<a.length()-1;i++)
{
if(a[i]>a[i+1])
{
a.erase(i,1);
cnt++;
break;
}
}
}
if(cnt<n)
a.erase(a.end()-n+cnt,a.end());
int j=0;
while(j<a.length()&&a[j]=='0')
j++;
if(j==a.length())
cout<<0;
else
cout<<a.substr(j);
return 0;
}
标签:cnt,数字,NN,int,样例,算法,kk,删数,贪心 来源: https://blog.csdn.net/weixin_47511190/article/details/110731611