在n位十进制正整数中选择删除m位(m<n)数字,使得剩余的n-m位数字(先后顺序不变)构成的整数最大。例如,正整数75813629401选择删除5位后的最大整数是869401。
#include "stdio.h"
#include "string.h"
int main()
{ char data[256];
int n;
int digit;
int m;
char stack[256], top = -1;
char stack2[256], top2 = -1;
int i = 0;
scanf("%s", data);
n = strlen(data);
scanf("%d", &m);
digit = n-m;
if(!m)
{
printf("%s",data);
return 0;
}
int last_pick=-1,max,maxi;
while(digit--)
{
max=-1;
maxi=-1;
for(int i=n-(digit+1);i>=last_pick+1;i--)
{
if(data[i]>=max)
{
maxi=i;
max=data[i];
}
}
if(n-(digit+1)==maxi)
{
while(data[maxi]!='\0')
stack[++top]=data[maxi++];
break;
}
stack[++top]=data[maxi];
last_pick=maxi;
}
stack[++top]='\0';
printf("%s",stack);
return 0;
}