贪心
如果a[i]>a[i+1],a[i]去掉,即前面的数要小于后面的数
#include<stdio.h.> #include<string.h> #include<stdlib.h> char str[1100]; int a[1100],b[1100]; int main() { int n,i,len,num; while(scanf("%s%d",str,&n)!=-1) { if(str[0]=='0'&&n==0)break; for(i=0;str[i]!='\0';i++) a[i]=str[i]-'0'; num=0;len=i; for(i=0;i<len-1&&n>0;i++) { if(a[i]<=a[i+1]) { b[num++]=a[i]; } else { n--; while(b[num-1]>a[i+1]&&n>0)//处理b[]比a[i+1]大的数 num--,n--; } } for(i;i<len;i++) b[num++]=a[i]; for(i=0;i<num-n;i++) if(b[i]!=0)break; if(i==num-n) puts("0"); else { for(i;i<num-n;i++) printf("%d",b[i]); printf("\n"); } } return 0; }