求助啊,关于一道删除数字的问题
对给定的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; }我的代码: