洛谷 贪心 删数 p1106
题目描述 键盘输入一个高精度的正整数NNN(不超过250250250位) ,去掉其中任意kkk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NNN和kkk,寻找一种方案使得剩下的数字组成的新数最小。
输入格式 nnn (高精度的正整数)
kkk(需要删除的数字个数)
输出格式 最后剩下的最小数。
输入输出样例 输入 #1
175438
4
输出 #1
13
#include
#include
#include
using namespace std;
int main()
{
string s;
int k;
cin>>s;
cin>>k;
for(int i=0; i<k; ++i)
{
for(int j=0; j<s.size()-1; ++j)
{
if(s[j]-‘0’>s[j+1]-‘0’)
{
s.erase(s.begin()+j,s.begin()+1+j);
while(s.size())
{
if(s[0]==‘0’)//当首为0的时候删除例如01变为1
s.erase(s.begin(),s.begin()+1);
else
break;
}
if(s.size()==0)
{
s+=‘0’;//为空的时候赋值为0
}break;
}
if(j==s.size()-2)s.erase(s.end()-1,s.end());
}if(s[0]=='0')break;
}cout<<s<<endl;
}