题目描述
给定一个正整数(<=255位),从中删去n位后,使得剩下的数字组成的新数最小。
输入格式
第一行,要处理的正整数
第二行,一个整数n (n<255)
输出格式
仅一行,组成的最小的新数
代码实现:—————————————————————————————————————————————————
#include<iostream>
using namespace std;
int a[257],n,l;
void dfs(int i){
int j;
for(j=i+1;j<=l;j++)
if(a[j]!=-1) break;
if(a[j]>=a[i]) dfs(j);
else {a[i]=-1;return ;}
}
int main()
{
char s[257];int i,j;
cin>>s;
cin>>n;
l=strlen(s);
l--;
for(i=0;i<=l;i++)
a[i+1]=s[i]-'0';
l++;
while(n>0)
{
for(i=1;i<=l;i++)
if(a[i]!=-1&&a[i]!=0) break;
dfs(i);
n--;
}
int w=0,k=0;
for(i=1;i<=l;i++)
if(a[i]==0) w++;
else if(a[i]==-1) k++;
if(w+k==l) {cout<<0<<endl;system("pause");return 0;}
for(i=1;i<=l;i++)
if(a[i]!=-1&&a[i]!=0) break;
for(i;i<=l;i++)
if(a[i]!=-1) cout<<a[i];
cout<<endl;
system("pause");
return 0;
}