题目描述:
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,
比如当n=92081346718538,m=10时,则新的最大数是9888
输入:
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,
比如当n=92081346718538,m=10时,则新的最大数是9888
输出:
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
AC代码如下:
#include <stdio.h>
#include <iostream>
#include <string.h>
int main()
{
int i,k,t,m,end,flag,len;
char a[110],temp;
scanf("%d",&t);
while(t--)
{
memset(a,0,sizeof(a)); //功能:把buffer所指内存区域的前count个字节设置成字符c。返回指向buffer的指针。
scanf("%s %d",a,&m);
i=k=0, end=m,len=strlen(a);
while(end<len)
{
for(i=flag=k,temp=a[i];i<=end;i++)
{
if(a[i]>temp)
{
flag=i;
temp=a[i];
}
}
k=flag+1;
end++;
printf("%c",temp);
}
printf("\n");
}
return 0;
}
运行结果如下:
每次求出局部最优以达到全局最优