描述
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888
输入
第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
样例输入
292081346718538 10
1008908 5样例输出
988898
#include<stdio.h>
#include<string.h>
int main()
{
int t,m;
char n[110],temp,ma;
scanf("%d",&t);
int i,j,k,sum,flag=0;
while(t--){
memset(n,0,110);
scanf("%s %d",n,&m);
sum=strlen(n)-m;
k=m;
j=0;
temp=n[m];
while(sum--){
ma='0';
for(i=j;i<=k;i++)
if(n[i]>=ma) ma=n[i];
for(i=j;i<=k;i++)
if(n[i]==ma) {temp=n[i];j=i;flag=1;break;}
if(flag==0) { printf("%c",temp); j=m;}
else { flag=0; printf("%c",temp);}
j++;k++;
temp=n[k];
}
printf("\n");
}
return 0;
}

被折叠的 条评论
为什么被折叠?



