求助啊,关于一道删除数字的问题
对给定的N位高精度正整数,去掉其中的k个数字后,使剩下的数字构成的整数最大。输出每一行表示每个高精度正整数去掉相应的k个数字后构成的新的最大正整数。
程序代码:#include<stdio.h>
#include<string.h>
int main()
{
int l,i;
scanf("%d",&l);
while(l--)
{
int k,c[10],OK=0,q=0,w,f,j=0,t,p;
char n[100];
scanf("%s%d",n,&k);
t=strlen(n);
if(k>=t)
{
printf("0\n");
continue;
}
for(i=0;i<10;i++)
c[i]=0;
for(i=0;i<t;i++)
{
if(n[i] == '0')
c[0]++;
if(n[i] == '1')
c[1]++;
if(n[i] == '2')
c[2]++;
if(n[i] == '3')
c[3]++;
if(n[i] == '4')
c[4]++;
if(n[i] == '5')
c[5]++;
if(n[i] == '6')
c[6]++;
if(n[i] == '7')
c[7]++;
if(n[i] == '8')
c[8]++;
if(n[i] == '9')
c[9]++;
}
for(i=0;i<10;i++)
{
q=q+c[i];
if(q>=k)
{
f=i;
p=q-k;
w=c[i]-p;
break;
}
}
for(i=0;i<t;i++)
{
if(((int)n[i]-48)>f)
putchar(n[i]);
if(((int)n[i]-48) == f)
{
if(j < w)
j++;
else
putchar(n[i]);
}
}
printf("\n");
}
return 0;
}我的代码:
