#include <bits/stdc++.h>
using namespace std;
void deleteMax(string &n,int k)
{
int a,i,j,f,t;
a=n.length();
t=a;
for(i=1;i<=k;i++)
{ for(j=0;j<a;j++)
{
if(n[j+1]<n[j])
{
for(f=j;f<=a-1;f++)
n[f]=n[f+1];
break;
}
}
a--;
}
i=0;
if(n[0]=='0')
{
while(n[i]=='0')
i++;
}
if(i==t-k)
cout<<"0";
for(j=i;j<t-k;j++)
cout<<n[j];
}
int main()
{
string g;
int r;
cin>>g;
cin>>r;
deleteMax(g,r);
return 0;
}
给定n位整数a,去掉其中任意k<=n个数字后,剩下的数字按原次序排列组成一个新的正整数。试设计一个删除方案,使得该正整数最小。n<=1000,k<=1000。
输入:一高精度整数n,要删除的位数k;
输出:删除k个数字后的最小新数
示例:
请输入一高精度整数:178906
请输入要删除的位数:4
删除4个数字后的最小新数:6
可以使用下述函数,也可以不使用。
函数头:
//采用最近下降点优先方法,删除整数n(建议用string存储)的k位数字
void deleteMax(string &n,int k){
}//deleteMax